2017-11-06 1 views
-1

이 C 프로그램에서 나는 이해할 수없는 결과를 얻는다.fork()가이 print 문을 호출하는 이유는 무엇입니까?

#include <stdio.h> 

int main() 
{ 
    printf("Hello World\n"); 
    printf("%d\n", fork()); 
    return 0; 
} 

그것은 출력 :

Hello World 
5 
Hello World 
0 

내 질문에, 왜 그것을 두 번에 "Hello World"를 인쇄합니까? 내 이해에서 "Hello World"를 인쇄 한 다음 fork()를 호출합니다.

fork()는 프로그램 시작 부분부터 시작합니까?

+1

"Hello world"는 캐시되지 않았으며 캐시되지 않았습니다. 따라서 두 번째 프로세스가 종료되면 출력 버퍼에서도이 메시지를 인쇄합니다. fork하기 전에'fflush (stdout)'을 추가하십시오. – Ivan

답변

0

설명서 페이지를 읽는 경우 fork은 부모와 자식 모두에게 값을 반환합니다. 그리고 그것은 프로그램의 시작부터 시작하지 않습니다.

포크에 대한 설명서 페이지를 참조하십시오