Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=getgid">getgid</a>(2)

1장. getgid(2)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 에러
1.4절. 예제

그룹 식별자(identity)를 알아낸다.


1.1절. 사용법

#include <unistd.h>

gid_t getgid(void);
gid_t getegid(void);
		


1.2절. 설명

getgid는 현재 프로세스의 실제(real) 그룹 ID를 리턴한다.

getegid는 현재 프로세스의 유효(effective) 그룹 ID를 리턴한다.

실제 그룹 아이디는 프로세스를 실행시킨 유저의 그룹 아이디를 말하며, 유효 그룹 ID는 프로세스 실행중에 getegid(2)등의 함수를 이용해서 임시로 만들어진 그룹 아이디로 프로세스가 실행되는 동안 파일생성등에 영향을 미친다. 모든 파일은 실제 그룹 아이디가 아닌 유효 그룹 ID로 생성된다.

최초 프로세스가 실행되면 실제 그룹 ID와 유효 그룹 ID는 동일한 값을 가진다.


1.3절. 에러

이 함수들은 항상 성공한다.


1.4절. 예제

#include <unistd.h>

#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
    int fd;
    // 최초 실행될 때는 실제 그룹 아이디와 유효 그룹아이디가 
    // 동일하다.     
    printf("GID is %d : %d\n", getegid(), getgid());

    // 유효 그룹 아이디를 506으로 변경한 후 파일을 생성한다. 
    // 생성된 파일은 506그룹소유로 생성된다.
    setegid(506);
    fd = open("ok.txt", O_WRONLY|O_CREAT, S_IRWXU);
    close(fd);
    printf("GID is %d : %d\n", getegid(), getgid());

    // 유효 그룹 아이디를 원래대로 되돌린다.
    setegid(getgid());
    fd = open("ok2.txt", O_WRONLY|O_CREAT, S_IRWXU);

    printf("GID is %d : %d\n", getegid(), getgid());
    close(fd);
}