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 }
출력 결과는 위와 같습니다.
부모 프로세스에서 검사하길(20번 줄)~~
자식 프로세스가 끝났을 경우 자식프로세스가 막 끝났다고 출력을 합니다.
재미있는것은 자식프로세스가 다 끝난 다음에 부모프로세스가 끝나게 된다는 것을 확인 할 수 있습니다.
잘 기다려지네요~ ^.^
그래서 간편하게 프로세스를 만들때 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번째 출력줄이 바로 부모프로세스에서 출력한 결과
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 |