2015-11-04 52 views
0
pid = fork(); 
if(pid == 0) 
{ 
    getchar(); 
    printf("Hello From Child\n"); 
} 
else 
{ 
    printf("Hello From Parent\n"); 
} 
printf("Hello From %d\n",getpid()); 

這是我得到的輸出:爲什麼孩子中的getchar()沒有執行?

[email protected]:/home/test#./a.out 
Hello From Parent 
Hello From 2370 
[email protected]:/home/test# Hello From Child 
Hello From 2371 

在孩子printf語句中的getchar之前執行()?

+0

希望能有一個答案的問題PLZ。 – user3480226

回答

0

它正在執行,並在預期的序列,但它看起來像你是一個空白字符餵養它(返程)

如果有東西在stdingetchar()在執行時讀取,輸出是一個小清潔器:

[email protected]:~$ echo 'a' | ./a.out 
Hello From Parent 
Hello From 10312 
Hello From Child 
Hello From 10313 
+0

但stdin緩衝區中沒有任何內容。作爲一個線索,如果我只是在子和父之間交換getchar(),getchar()會導致父級在打印「Hello From Parent」之前阻止等待輸入, – user3480226

相關問題