我有這個代碼,執行根據的,如果活動過程是父或在一個無限循環的子過程中的一些代碼:爲什麼這個代碼使用fork()的工作?
pid_t childPID;
childPID=fork();
while (1)
{
if (childPID >=0)
{
if (childPID==0)
{
[do child process stuff]
}
else
{
[do parent process stuff]
}
}
else
{
printf("\n Fork failed, quitting!!!!!\n");
return 1;
}
}
代碼很簡單,但有它一個非常大的事情對我來說這我不明白它是如何發生的,雖然我有一個猜測:
如果沒有考慮到我們正在創建2個進程,它看起來像childPid不斷被重新分配,我認爲沒有任何意義。
所以我的猜測是,fork爲每個進程創建一個childPid,返回一個0到父進程和pid到子進程,即使這個語法讓我認爲它應該只返回一個結果並賦值chilPid。
是我的猜想正確,或有參與一些其他的事情嗎?
謝謝。
如何執行'[do parent stuff] '和'[做孩子的東西]'結束?他們中的任何一個是否退出該計劃? – fuz
'man fork',return value:「成功時,子進程的PID返回父進程,0返回給子進程,失敗時返回-1,父進程未創建,並且errno被適當地設置。「 – keltar
」不斷被重新分配「 - 我在這個代碼中只看到一個賦值給'childPid',它的*不*在一個while循環中 – WhozCraig