반응형

getgrnam(3)

#include <sys/types.h>
#include <grp.h>

struct group *getgrnam(const char *name);

group name으로 group의 상세 정보를 얻습니다. 이 함수는 multi-thread 프로그램에서는 동시에 호출되면 잘못된 정보를 return할 수 있으므로 getgrnam_r(3)함수를 사용하기 바랍니다. group의 정보는 /etc/group 파일에 저장합니다.

 

group file의 format (그룹명:x:그룹ID:usr목록, ...)

grp1:x:3000:usr1,usr2,usr3

 

파라미터

name
    - 상세 정보를 얻기 위한 그룹이름

 

RETURN

struct group {
    char   *gr_name;       /* group name */
    char   *gr_passwd;     /* group password */
    gid_t   gr_gid;        /* group ID */
    char  **gr_mem;        /* group members */
};

NULL이 아닌 경우
    - 정상적으로 group 상세 정보를 조회함

NULL
    - 미등록된 그룹이거나 오류가 발생하였습니다.
    - 오류 내용은 errno에 설정되며, 함수를 호출하기 전에 errno = 0; 으로 초기화가 필요합니다.

 


활용 예제

 

Sample) 그룹명을 입력 받아서 그룹 정보 조회

#include <stdio.h>
#include <unistd.h>
#include <grp.h>
#include <errno.h>
#include <string.h>

int main(int argc, char **argv)
{
    struct group *gr = NULL;
    int    idx;

    if(argc != 2) {
        return 1;
    }

    errno = 0;
    gr = getgrnam(argv[1]);
    
    if(gr == NULL) {
        if(errno == 0) {
            printf("%s는 존재하지 않는 그룹ID입니다.\n", argv[1]);
        } else {
            printf("error: %s\n", strerror(errno));
        }
        return 1;
    }
    
    printf("group id: %d\n",   gr->gr_gid);
    printf("group name: %s\n", gr->gr_name);
     
    return 0;
}

 


see also : getegid(2)  getgrgid(3)  getgrnam_r(3) getgrgid_r(3) 사용자 및 그룹 관련 Library

 

 

반응형
블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

,