這是一個作業問題。我必須編寫一個程序分叉20次。每個新進程都將一個變量(整數)+1加到它們之間共享的變量中。事情是,我必須使用信號量(IPC)。這段代碼是'工作' - 最後給出20的值。共享內存中的信號量,進程和遞增變量
*buf = 0;
for(i=1; i<=20; ++i)
{
if(fork()!=0)
{
*buf += 1;
exit(0);
}
}
編輯: 基於this代碼,我試圖讓輸出,如:
我的孩子1 ...
我的孩子2 ...
。
。
。
我是小孩20 ...
它曾經工作過一次(第一次),然後訂單變得隨機。但我沒有更改任何代碼。我究竟做錯了什麼?
您可能已將您的fork()調用錯誤。它向父進程返回非零值;因此,只有你的父母增加了價值。 – zneak 2012-01-03 02:17:43