C言語システムコール-setgroups

setgroupsシステムコール

概要

getgroupsはプロセスの補助グループIDを設定します。

プロセスは実効グループIDに加えて、補助グループIDを最大で「NGROUPS_MAX」まで保持することができます。


サンプルプログラム


#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <limits.h>

static int
check_groups(void)
{
    int cnt = 0;
    int groups = 0;
    gid_t list[NGROUPS_MAX] = {'\0'};

    groups = getgroups(NGROUPS_MAX, list);
    if(groups < 0){
        printf("Error: getgroups(%d) %s\n", errno, strerror(errno));
        return(-1);
    }

    for(cnt = 0; cnt < groups; cnt++){
        printf("%d\n", (int)list[cnt]);
    }

    return(0);
}

int
main(void)
{
    int rc = 0;
    gid_t list[4] = {'\0'};

    list[0] = 1000;
    list[1] = 1001;
    list[2] = 1002;
    list[3] = 1003;

    rc = setgroups(4, list);
    if(rc < 0){
        printf("Error: setgroups(%d) %s\n", errno, strerror(errno));
        return(-1);
    }

    check_groups();

    return(0);
}


関連ページ