【发布时间】:2012-02-01 04:07:00
【问题描述】:
这是一道作业题。我必须编写一个程序自行分叉 20 次。每个新进程都将 +1 添加到所有进程之间共享的变量(整数)。问题是,我必须使用信号量(IPC)。这段代码正在“工作” - 最后给出 20 的值。
*buf = 0;
for(i=1; i<=20; ++i)
{
if(fork()!=0)
{
*buf += 1;
exit(0);
}
}
编辑:
基于this 代码,我试图获得如下输出:
我是孩子 1...
我是孩子 2...
.
.
.
我是20岁的孩子......
它工作了一次(第一次),然后顺序变得随机。但我没有更改任何代码。我做错了什么?
【问题讨论】:
-
您的
fork()呼叫可能有误。它向父进程返回非零值;因此,只有您的父母会增加该值。
标签: c ipc semaphore shared-memory