- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Link
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[시스템프로그래밍] fork 함수와 wait 함수의 이해! 자식프로세스의 시작.. 그리고 끝! 본문
★─Multi Media/☆─3학년 2학기
[시스템프로그래밍] fork 함수와 wait 함수의 이해! 자식프로세스의 시작.. 그리고 끝!
드럼치는한동이 2009. 9. 30. 13:58fork함수는 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번 줄)~~
자식 프로세스가 끝났을 경우 자식프로세스가 막 끝났다고 출력을 합니다.
재미있는것은 자식프로세스가 다 끝난 다음에 부모프로세스가 끝나게 된다는 것을 확인 할 수 있습니다.
[출처] http://heartbit.tistory.com/333
그래서 간편하게 프로세스를 만들때 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번 줄)~~
자식 프로세스가 끝났을 경우 자식프로세스가 막 끝났다고 출력을 합니다.
재미있는것은 자식프로세스가 다 끝난 다음에 부모프로세스가 끝나게 된다는 것을 확인 할 수 있습니다.
[출처] http://heartbit.tistory.com/333
'★─Multi Media > ☆─3학년 2학기' 카테고리의 다른 글
[시스템프로그래밍] 3.8 프로세스 체인 구현 (0) | 2009.10.12 |
---|---|
[시스템프로그래밍] [프로그램 3.1 3.2] 프로세스 체인, 프로세스 팬 (0) | 2009.10.09 |
[영상정보처리] 수업 PPT 모음 (0) | 2009.09.21 |
[웹프로그래밍] 수업 PPT 모음 (0) | 2009.09.18 |
[시스템프로그래밍] 수업 PPT 모음 (0) | 2009.09.15 |
Comments