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
댓글 달기