관리 메뉴

드럼치는 프로그래머

[시스템프로그래밍] fork 함수와 wait 함수의 이해! 자식프로세스의 시작.. 그리고 끝! 본문

★─Multi Media/☆─3학년 2학기

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

드럼치는한동이 2009. 9. 30. 13:58
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번 줄)~~
자식 프로세스가 끝났을 경우 자식프로세스가 막 끝났다고 출력을 합니다.

재미있는것은 자식프로세스가 다 끝난 다음에 부모프로세스가 끝나게 된다는 것을 확인 할 수 있습니다.


[출처] http://heartbit.tistory.com/333
Comments