2
我已經讀過男人和其他地方,但我正在爲這個概念而努力。孩子的過程總是獨一無二的,但在任何分叉的例子中,我發現孩子的pid必須爲0.如果有多少孩子,他們不可能都是零,或者他們不會是唯一的?fork():子進程始終爲零且始終唯一?這是怎麼回事?
我已經讀過男人和其他地方,但我正在爲這個概念而努力。孩子的過程總是獨一無二的,但在任何分叉的例子中,我發現孩子的pid必須爲0.如果有多少孩子,他們不可能都是零,或者他們不會是唯一的?fork():子進程始終爲零且始終唯一?這是怎麼回事?
子進程的PID永遠不爲零。 fork
返回零給孩子,告訴它它是孩子。然而,子進程的pid是fork
返回到父項的值。 (請記住,fork
,假設它成功,返回兩次 - 一次在孩子中,一次在父母中。)您可以通過編寫一個程序來比較getpid
在孩子中的結果與值fork
返回到父母(有一點IPC)。
孩子的pid在自己的環境中始終爲0。父進程是看到真正的PID的人。 –
可能重複[什麼確切的回報嗎?](http://stackoverflow.com/questions/5577564/what-exactly-does-fork-return) – Daniel
@RedAlert不,孩子的PID從來沒有0. fork()返回0_給孩子表明它是孩子。 –