2017-05-22 5 views
-2

출력은 어떻게됩니까? 나는 혼란 스럽다. 2 개 또는 3 개이지만 확실하지는 않다. 도울 수 있니?하위 프로세스가 두 인쇄물을 모두 실행합니까?

main() 
{ 
    printf("hello\n"); 

    if(fork() == 0) 
     printf("hello\n"); 
} 
+0

무엇을 찾았습니까? 출력을'cat'을 통해 파이프하거나 파일로 리디렉션하면 어떻게됩니까? –

+1

사람들은 코드를 잘라내어 SO 문항에 붙여 넣지 만, 선택의 여지가없는 편집기에 넣고 & *^% $ 것을 컴파일하여 솔리드 해답을 얻는 이유는 무엇입니까? – John3136

+0

그의 관심사는'왜'왜 코드가 그렇게 행동하는지, 그는 환영합니다. – Xaqron

답변

2

if 문을거야, 그래서이 시점에서 1 hello이 될 자식 프로세스와 부모 0이 아닌 (PID)에 대한 제로 그것의 자신의 반환 값을 실행하는 것입니다 각각의 과정을 분기 후 평가한다 .

코드 상단에 처음으로 hello을 더하면 터미널에 총 2 hello 초가됩니다.