두근두근이야기

fork()와 프로세스 식별자 본문

IT/IT ::Linux

fork()와 프로세스 식별자

골든 2013. 4. 25. 01:26

fork함수-새 프로세스를 생성할 때 사용하는 함수

 #include <unistd.h>

pid_t fork(void);

반환값: 자식 프로세스의 경우 0, 부모 프로세스의 경우 지식의 프로세스 ID, 오류시 -1

-fork 함수는 기존 프로세스가 새 프로세스를 생성할 때 쓰임

-fork로 생성한 새 프로세스를 자식 프로세스(child process)라고 부름

-이 함수는 한 번 호출되나 두 번 반환하는 함수임

-자식에게 반환되는 값은 0이고, 부모에게 반환되는 값은 새 자식 프로세스의 ID임

-프로세스 생성이 실패한 경우 -1을 리턴하고, 오류의 내용을 errno라는 변수에 저장함

-부모 프로세스는 자식 프로세스의 프로세스 ID를 직접 알아낼 수 있는 함수가 없음

-자식 프로세스는 부모 프로세스의 프로세스 ID를 getppid 함수를 호출하여 얻을 수 있음


프로세스 식별자-프로세스의 식별자들을 반환하는 함수

 #include <unistd.h>
pid_t getpid(void);                   반환값: 호출한 프로세스의 프로세스 ID

pid_t getppid(void);                 반환값: 호출한 프로세스의 부모 프로세스 ID

uid_t getuid(void);                   반환값: 호출한 프로세스의 실제 사용자 ID

uid_t geteuid(void);                 반환값: 호출한 프로세스의 유효 사용자 ID

gid_t getgid(void);                   반환값: 호출한 프로세스의 실제 그룹 ID

gid_t getegid(void);                 반환값: 호출한 프로세스의 유효 그룹 ID

-프로세스는 고유한 프로세스 ID를 가짐

-프로세스 ID는 음이 아닌 정수임

-프로세스 ID는 유일한 속성이기 때문에 프로세스의 식별자로 사용함

-프로세스 ID가 고유하긴 하지만, 시스템은 프로세스 ID를 재사용함

  (프로세스가 종료되면 해당 ID는 재사용 후보가 됨)

-프로세스 ID 0은 스케줄러 프로세스임

  (디스크 상에 존재하지 않으며, 커널의 일부임)

-프로세스 ID 1은 보통 init 프로세스

-프로세스 ID 2는 페이지데몬 프로세스

'IT > IT ::Linux' 카테고리의 다른 글

생산자 소비자 패턴  (0) 2013.07.23
fork시 두번찍히는 문제  (0) 2013.04.30
gethostname, 호스트 이름을 돌려주는 함수  (0) 2013.04.11
utsname.h  (0) 2013.04.11
tar gzip  (0) 2013.04.11