반응형
fork함수는 자식 프로세스를 생성하는 함수입니다.
프로세스가 무엇일까요???
프로세스
컴퓨터에서 실행되는 프로그램을 의미합니다.
쉽게 설명을 하면 저희가 게임을 할 때에 게임 프로그램을 실행하게 되는데 이를 프로세스라고 합니다.
지금 구글도 어떻게 보면 프로그램으로 실행되어 하나의 프로세스라고 할 수 있습니다.
현재 프로세스를 부모 프로세스라 하고 fork로 생성한 프로세스를 자식 프로세스라 합니다.
이때 자식 프로세스 생성 시 fork시작 전까지의 모든 내용을 복사합니다.
fork
#include <unistd.h>
pid_t fork(void);
fork는 자식 프로세스르 생성합니다.
만약 실패 시 '-1'을 리턴하게 됩니다.
부모 프로세스는 자식 프로세스의 pid를 반환하고
자식 프로세스는 '0'을 리턴합니다.
#include <stdio.h>
#include <unistd.h>
int main(void)
{
int num;
pid_t newpid;
num = 10;
newpid = fork();
if (newpid < 0)
{
perror(NULL);
return (1);
}
if (newpid == 0)
{
printf("this is child process.\n");
num *= 2;
printf("%d\n", num);
printf("child process finish.\n");
}
else
{
printf("this is parent process.\n");
num *= -2;
printf("%d\n", num);
printf("parent process finish.\n");
}
return (0);
}
fork실행 전에 num이라는 10으로 초기화를 해주었습니다.
부모 프로세스에서는 -2를 곱해 num이 -20이 됩니다.
자식 프로세스에서는 2를 곱해 num이 20이 됩니다.
출력값입니다.
this is parent process.
-20
parent process finish.
this is child process.
20
child process finish.
즉, 자식 프로세스는 fork생성 이전까지만 부모 프로세스의 내용을 메모리를 복사합니다. 그 이후 서로 독립적으로 작동이 됩니다.
반응형
'Language > C언어' 카테고리의 다른 글
C051_waitpid 함수 사용하기 (1) | 2024.01.09 |
---|---|
C050_wait 함수 사용하기 (1) | 2024.01.08 |
C048_unlink 함수 사용하기 (0) | 2024.01.06 |
C047_access 함수 사용하기 (2) | 2024.01.05 |
C046_exit 함수 사용하기 (0) | 2024.01.04 |