반응형
    
    
    
  
getgrgid_r(3)
#include <sys/types.h>
#include <grp.h>
int getgrgid_r(gid_t gid, struct group *grp,
          char *buf, size_t buflen, struct group **result);group id로 사용자 그룹의 상세정보를 조회하는 함수입니다. 이 함수는 multi-thread 프로그램에서도 안전한 thread-safe한 함수입니다. group의 정보는 /etc/group 파일에 저장되며, 파일의 format은 아래와 같습니다.
grp1:x:3000:usr1,usr2,usr3
grp1 : group명
x : group 비밀번호, x인 경우는 비밀번호 미설정
3000 : grp1에 대한 group id
usr1,usr2,usr3 : 그룹에 포함된 user 목록
파라미터
gid
    - 그룹의 상세 정보를 얻기 위한 그룹idgrp
    - 검색한 그룹 정보를 저장할 bufferbuf
    - 그룹명(문자열)을 저장함buflen
    - buf의 크기result
    - 정상적으로 조회되었다면, result는 grp와 같습니다.
    - NULL이면, 조회를 하지 못하였거나, 오류가 발생하였습니다.
    - 오류가 발생하였다면 return값이 0이 아닙니다.
RETURN
0 
    - 정상적으로 그룹정보를 조회하였습니다.
양수
    - 오류가 발생하였으며, errno값이 return 됩니다.
활용 예제
Sample) 현 프로세스의 group id로 group name을 출력
#include <sys/types.h>
#include <unistd.h>
#include <grp.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
int main(int argc, char *argv[])
{
    struct group   grp;
    struct group  *result;
    char   buf[1024];
    int    ret;
    ret = getgrgid_r(getgid(), &grp, buf, sizeof(buf), &result);
    if (result == NULL) {
        if (ret == 0)
            printf("%s\n", buf);
        else {
            printf("getgrgid_r() error: %s\n", strerror(ret));
        }
        return 1;
    }
    printf("Group Name: %s; GID: %d\n", grp.gr_name, grp.gr_gid);
    return 0;
}
see also : getegid(2) getgrnam(3) getgrgid(3) getgrnam_r(3) 사용자 및 그룹 관련 Library
반응형
    
    
    
  'C언어 header > grp.h' 카테고리의 다른 글
| getgrnam_r(3) - 그룹명으로 그룹의 상세 정보 조회 (thread-safe) (0) | 2019.10.14 | 
|---|---|
| getgrgid(3) - group id로 그룹 상세 정보 조회 (0) | 2019.10.14 | 
| getgrnam(3) - group명으로 그룹 상세 정보 조회 (0) | 2019.10.14 | 
 
							 
							