C언어 header/grp.h
getgrnam(3) - group명으로 그룹 상세 정보 조회
자연&사람
2019. 10. 14. 21:40
반응형
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
반응형