<aside> 💡 fork() 현재 실행되는 프로세스에 대한 복사본을 만들어 자식 프로세스를 생성한다.
</aside>
<aside> 💡 pid_t 자료형 프로세스 ID를 저장하는 자료형
</aside>
프로세스를 생성하고자 할 때 fork
함수를 사용하면 된다. fork
함수를 호출하는 프로세스는 부모 프로세스가 되고 새롭게 생성되는 프로세스는 자식 프로세스가 된다.
프로세스란
디스크에 있던 프로그램 파일이 메모리에 올려지고 시스템의 스케쥴에 따라 실행되는 실행 단위가 된다.<aside> 💡 '프로세스'는 운영체제로부터 시스템 자원을 할당 받는 단위이고, '스레드'는 프로그램 실행 단위이다. 하나의 프로세스가 할당받은 자원을 여러 개의 스레드가 공유하여 사용할 수 있다.
프로세스는 운영체제로부터 메모리, 주소공간 등을 할당 받고 스레드는 할당 받은 자원들을 스레드끼리 공유하며 실행된다.
</aside>
fork는 자식 프로세스를 만들기 위해서 사용되는 프로세스 생성기이다. fork에 의해 생성된 자식 프로세스는 자신만의 PID를 가지게 되며, PPID는 부모프로세스의 PID를 가지게 된다.
성공할 경우 자식 프로세스의 PID가 부모에게 리턴되며, 자식에게는 0이 리턴된다. 실패할 경우에는 -1이 리턴되고, 적절하나 errno 값이 설정된다.
#include <unistd.h>
pid_t fork(void);
현재 실행중인 프로세스와 동일한 기능을 하는 새로운 프로세스를 생성한다.
새로운 프로세스를 자식 프로세스
라고 하고 기존의 프로세스를 부모 프로세스
라 한다.
fork
함수에 의해 생성된 자식 프로세스는 부모 프로세스의 메모리를 그대로 복사하여 가지게 된다. 그리고 fork
함수 호출 이후 코드부터 각자의 메모리를 사용하여 실행된다.