본문 바로가기
Language/C언어

C049_fork 함수 사용하기

by OdOp 관리자 2024. 1. 7.
SMALL

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생성 이전까지만 부모 프로세스의 내용을 메모리를 복사합니다. 그 이후 서로 독립적으로 작동이 됩니다. 

LIST

'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