fork() 함수질문입니다.
글쓴이: gag2012 / 작성시간: 목, 2018/04/19 - 5:45오후
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 void main() {
5
6 int x, i;
7
8 for (i = 0; i<5; i++) {
9 x = fork();
10 if (x == 0) {
11 int k;
12 for (k = 0; k<10; k++) {
13 printf("%d-th child running %d-th iteration\n", i, k);
14 sleep(1);
15 fflush(stdout);
16 }
17 }
18 }
19
20 printf("parent exits\n");
21
22 }원래 기존에 17번행과 18번행에 exit(0)으로 자식프로세스를 종료시켰는데
exit(0)을 제거했을 때 몇개의 자식이 생기겠는가라는 질문입니다.
제가 생각했을 때는
처음 부모가 5개의 자식을 만들고,
그 각각의 5개의 자식이 또 다시 5개의 자식을 만들어 25개가
25개가 다시 5개를 만들어 125개가
그렇게 n번 8번 for문을 돌때마다 5의 n승의 자식이 생긴다고 생각이 드는데요.
아닌가요?
답은 따로 가지고 있지않습니다! 부탁드려요.
Forums:


9 줄의 fork가 실행될때마다 2개로 나누어지고,
9 줄의 fork가 실행될때마다 2개로 나누어지고, 그 두 프로세스가 다시 fork 로 돌아오므로 프로그램 실행 중에는 2의 5승개가 만들어집니다.
i 번째마다 2의 i 승개가 존재하면서 그 중 바로 생긴 차일드에서 10번의 반복문을 출력하는군요.
---
http://coolengineer.com
댓글 달기