본문 바로가기
컴퓨터

[Linux] fork 함수 호출을 통한 프로세스 생성

by Luyin 2012. 9. 3.

fork()함수는 호출한 프로세스의 복사본 프로세스를 생성한다. 실패할 경우 -1을 리턴한다.

성공할 경우 프로세스가 둘로 나뉘어서 원본 프로세스와 복사본 프로세스에게 전달되는 리턴값이 다르다.

원본 프로세스의 리턴값은 복사본 프로세스 ID이고, 복사본 프로세스의 리턴 값은 0이다.

------------------------------------------------

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

int main(int argc, char **argv)
{
pid_t pid;
int data=10;

pid=fork();
if(pid==-1)
printf("fork 실패, 프로세스 id : %d \n", pid);

printf("fork 성공, 프로세스 id : %d \n", pid);

if(pid==0) /* 자식 프로세스라면 */
data+=10;
else /* 부모 프로세스라면 */
data-=10;

printf("data : %d \n", data);
return 0;
}

------------------------------------------------

fork() 함수 호출 성공시, 부모 프로세스는 자식 프로세스의 ID를 리턴받고 fork 함수 호출 이후를 실행하게 되고

자식 프로세스 역시 0을 리턴받고 fork함수 호출 이후를 실행하게 된다. 실행의 흐름이 두 갈래로 나뉜다.

그러나 부모프로세스와 자식 프로세스는 같은 프로그램 코드를 서로 다른 공간에서 실행하므로 데이터의 공유는 일어나지 않는다.

독립된 두 개의 프로그램이 실행되는 것이다.