🧩 fork

function

fork함수를 사용하면 새로운 프로세스를 하나 호출한다.

이때, 호출하는 자식 프로세스는 부모 프로세스의 메모리를 그대로 복사하여 가진다.

그리고 fork함수 호출 이후 각자의 메모리를 사용하여 실행된다.

#include <unistd.h>    //header file

pid_t fork(void);

return value

example

#include <stdio.h>
#include <unistd.h>

int main(void)
{
	int x = 0;
	
	fork();
	x = 1;
	printf("PID : %d, x : %d\\n", getpid(), x);
	return (0);
}
$ ./a.out
PID : 8270, x : 1
PID : 8271, x : 1

결국 x 에 값을 대입할 때, fork() 명령 이전에 대입하나 이후에 대입하나 상관이 없다! fork를 하면 자식 프로세스가 부모의 메모리를 그대로 복사해서 가지기 때문. 이후 같은 작업을 각 프로세스가 개별적으로 실행한다.

또한 자식 프로세스는 fork()함수를 실행하지 않기 때문에 이때 getpid()의 return value는 0이다. 따라서 getpid()의 return value를 기준으로 자식인지 부모인지 알 수 있다.