본문 바로가기

컴퓨터/언어,프로그래밍

fork 함수와 wait 함수의 이해! 자식프로세스의 시작.. 그리고 끝!

fork함수는 fork함수를 호출하는 순간! 자식 프로세스가 생성이 됩니다.

그래서 간편하게 프로세스를 만들때 fork를 씁니다.
그런데...

언제 끝나는지 알 수 있을까요? ^.^
뭐 안다면 아는 방법은 많지만... 이번에는 wait를 써서 알아볼까 합니다.


  1 #include <stdio.h>
  2 #include <unistd.h>
  3 #include <sys/types.h>
  4
  5 int main(int argc, char **argv) {
  6     pid_t pid;
  7     int data = 10;
  8     int status = -111;
  9
 10     if (data == 10)
 11     {
 12         pid = fork(); //fork 함수 호출!! 자식프로세스에서 이 아래의 내용이 실행됩니다!
 13         if (pid == 0) //자식프로세스는 pid가 0입니다.
 14         {
 15             data += 100;
 16             printf("In child %d\n", data);
 17         }
 18     }
 19
 20     if (pid != 0) {
 21         pid = wait(&status); //바로 여기서 wait 함수를 써보네요~!
 22         printf("child process is finished\n");
 23     }
 24     printf("finish %d : %d\n", pid, data);
 25
 26     return 0;
 27 }

In child 110
finish 0 : 110 //여기까지가 자식프로세스에서 출력한 출력물
child process is finished.
finish 18229 : 10 //3~4번째 출력줄이 바로 부모프로세스에서 출력한 결과

출력 결과는 위와 같습니다.
부모 프로세스에서 검사하길(20번 줄)~~
자식 프로세스가 끝났을 경우 자식프로세스가 막 끝났다고 출력을 합니다.

재미있는것은 자식프로세스가 다 끝난 다음에 부모프로세스가 끝나게 된다는 것을 확인 할 수 있습니다.
잘 기다려지네요~ ^.^

'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글

dup2  (1) 2009.05.27
fork() execl() wait()  (0) 2009.05.27
Linux system() 와 fork(), execl() 사용  (0) 2009.05.27
프로세스  (0) 2009.05.26
프로세스 입출력 popen  (0) 2009.05.26
제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...