끄적끄적

반응형


자식프로세스의 시작.. 그리고 끝!


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번 줄)~~ 

자식 프로세스가  끝났을 경우 자식프로세스가 막 끝났다고 출력을 합니다.


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

반응형
Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]