Process Control
youngwiki
개요
해당 문서는 Process(프로세스)를 fork()함수를 통해 생성하고 관리하는 방법에 대해서 서술한다.
Process ID
Process ID(PID)란 각각의 프로세스가 가지는 고유한 음수가 아닌 숫자를 의미한다. PID를 얻는 방법은 다음 두가지가 있다.
- pid_t getpid(void);: 현재 실행 중인 프로세스의 PID를 반환
- pid_t getppid(void); 현재 실행 중인 프로세스를 생성한 부모 프로세스의 PID를 반환
pid_t 자료형은 정수로 저장되고 PID를 저장하는 특수한 자료형이다.
Process의 세가지 상태
프로세스를 다음 세가지 상태 중 하나로 구분할 수 있다.
- Running: CPU에 의해 실행되고 있거나 실행되기를 기다리고 있는 상태이며 결국 커널에 의해서 스케쥴링 된다.
- Stopped: 프로세스의 실행이 suspend 되었으며 추가적인 시그널을 받기 전까지 스케쥴링되지 않음
- Terminated: 프로세스가 영구적으로 정리되어 리소스의 정리가 필요함
- 다음 세가지 이유 중 하나로 종료됨
- default action이 terminate인 signal을 받았을 때
- main 루틴에서 return을 할 때 -> main에서 0을 반환하여 명시적으로 종료
- exit(): terminate 상태로 프로세스를 종료
- 정상적인 종료 상태는 0이며, 에러가 일어나면 0이 아니다.
- 다음 세가지 이유 중 하나로 종료됨