프로세스 관리

프로세스는 유닉스 시스템에서 파일 다음으로 중요한 개념입니다. 알다시피 프로세스는 활성화되어 실행 중인 살아있는 코드 객체입니다. 유닉스는 새로운 바이너리 이미지를 메모리에 적재하는 과정에서 프로세스를 생성하는 부분을 분리했습니다. 예를 들어 Windows는 새로운 프로세스를 생성하기 위해 CreateProcess() 함수 1개를 호출하면되지만, 유닉스는 fork(), exec 류의 시스템콜 2가지를 사용해야 합니다. 

 

프로세스 계층

새로운 프로세스를 생성하는 프로세스를 '부모 프로세스'라 하고, 새롭게 생성된 프로세스를 '자식 프로세스'라고 합니다. 리눅스에선 'init 프로세스'를 제외한 모든 프로세스는 부모 프로세스가 있습니다.

 

자신의 pid 값과 부모의 pid 값을 알고 싶다면 아래의 시스템콜을 사용하면 됩니다.

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

pid_t getpid(void);
pid_t getppid(void);