2014-05-02 25 views
2

我已經讀過男人和其他地方,但我正在爲這個概念而努力。孩子的過程總是獨一無二的,但在任何分叉的例子中,我發現孩子的pid必須爲0.如果有多少孩子,他們不可能都是零,或者他們不會是唯一的?fork():子進程始終爲零且始終唯一?這是怎麼回事?

+1

孩子的pid在自己的環境中始終爲0。父進程是看到真正的PID的人。 –

+1

可能重複[什麼確切的回報嗎?](http://stackoverflow.com/questions/5577564/what-exactly-does-fork-return) – Daniel

+0

@RedAlert不,孩子的PID從來沒有0. fork()返回0_給孩子表明它是孩子。 –

回答

5

子進程的PID永遠不爲零。 fork返回零給孩子,告訴它它是孩子。然而,子進程的pid是fork返回到父項的值。 (請記住,fork,假設它成功,返回兩次 - 一次在孩子中,一次在父母中。)您可以通過編寫一個程序來比較getpid在孩子中的結果與值fork返回到父母(有一點IPC)。