2017-11-16 1 views
-1

이 프로그램은 유닉스에서 실행되고 :이 코드를 실행 한 후 얼마나 많은 프로세스가 빌드됩니까?

main(int argc,char** argv) 
    { 
     forkthem(5) 
    } 
    void forkthem(int n) 
    { 
     if(n>0) 
     { 
      fork(); 
      forkthem(n-1); 
     } 
    } 

우리는 프로세스 트리를 구축하기 위해 노력하지만, 우리가 정말 대답을 얻었다하지 않았다. 누구든지 도와 주시면 매우 감사하겠습니다.

+0

당신이 printf와'처럼 ("%의 % n을 \ 없음", "# 버전 내부자", N)를'DBG의 mesgs을 추가 잘 할 것이며, 아마도'sleep (100)'을 사용하면 프로세스 트리를 볼 수 있습니다. 행운을 빕니다. – shellter

답변

1

n = 0이면 하나의 프로세스가 원래의 프로세스가됩니다.
N = 1이면 하나의 포크가 발생하므로 두 개의 프로세스를 다시 N = 1 공정 포크 다음
N = 2, 각각 SO 4 개 공정
...
N K = 2, ** k는 그래서

를 처리, N = 5 (32 개) 프로세스를 의미

관련 문제