これは宿題に関する質問です。私は自分自身を20回フォークするプログラムを書く必要があります。それぞれの新しいプロセスは、すべてのプロセスが共有する変数(整数)に+1を加えています。事は、私はセマフォ(IPC)を使用しなければならないということです。このコードは「作業中」です。最後に20の値を与えます。共有メモリ内のセマフォ、プロセス、インクリメント変数
*buf = 0;
for(i=1; i<=20; ++i)
{
if(fork()!=0)
{
*buf += 1;
exit(0);
}
}
EDIT: 私はのような出力を取得しようとしていますthisコードに基づいて:
私は子供1 ...私は子供の午前2時
...
。
。
。
私は子供です20 ...
これは1回(初回)働いてから順番が乱れました。しかし、私はコードを変更しませんでした。私は間違って何をしていますか?
あなたの 'fork()'呼び出しが間違っている可能性があります。親プロセスに非ゼロを返します。したがって、親だけが値をインクリメントします。 – zneak