这是一个作业问题。我必须编写一个程序分叉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