すでに定義した共有メモリに書き込むべきプロセスの数が異なります。私はシステムVセマフォを使って試しています。セマフォ(sem_access
)は1セマフォを介して共有メモリにアクセスする
sem_access.sem_op = -1;
semop(sem_access_id, &sem_access, 1);
info->index++;
printf ("INDEX= %d\n", info->index);
sem_access.sem_op = 1;
semop(sem_access_id, &sem_access, 1);
に初期化される問題が増加せず、常に同じ数、インデックスprintf
プリントすることです。 PS:私の悪い英語で申し訳ありませんが、私はスペイン語です。 編集:もし私がsleep(1)
を挿入すればうまくいくが、私は本当に睡眠を望んでいない!
'semop()'呼び出しの戻り値は何ですか?あなたはそれを無視している。 –
0を返し、エラーを返しません。 –