반응형
getgrnam_r(3)
#include <sys/types.h>
#include <grp.h>
int getgrnam_r(const char *name, struct group *grp, char *buf, size_t buflen, struct group **result);
group name으로 사용자 그룹의 상세정보를 조회하는 함수입니다. 이 함수는 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 목록
파라미터
name
- 그룹의 상세 정보를 얻기 위한 그룹명
grp
- 검색한 그룹 정보를 저장할 buffer
buf
- 그룹명(문자열)을 저장함
buflen
- buf의 크기
result
- 정상적으로 조회되었다면, result는 grp와 같습니다.
- NULL이면, 조회를 하지 못하였거나, 오류가 발생하였습니다.
- 오류가 발생하였다면 return값이 0이 아닙니다.
RETURN
0
- 정상적으로 그룹정보를 조회하였습니다.
양수
- 오류가 발생하였으며, errno값이 return 됩니다.
활용 예제
Sample) group명을 입력받아 group id를 조회합니다.
#include <sys/types.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 = getgrnam_r(argv[1], &grp, buf, sizeof(buf), &result);
if (result == NULL) {
if (ret == 0)
printf("%s\n", buf);
else {
printf("getgrnam_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) getgrgid_r(3) 사용자 및 그룹 관련 Library
반응형
'C언어 header > grp.h' 카테고리의 다른 글
getgrgid_r(3) - 그룹 ID와 그룹의 상세 정보 조회(thread-safe) (0) | 2019.10.14 |
---|---|
getgrgid(3) - group id로 그룹 상세 정보 조회 (0) | 2019.10.14 |
getgrnam(3) - group명으로 그룹 상세 정보 조회 (0) | 2019.10.14 |