0

いくつかの子プロセスを生成するプロセスがあります。それらはすべて 1 つのセマフォを共有しています。

私のメインプログラムで。

sem_t *sharedSem = sem_open(SHAREDSEM, O_CREAT, 0600, 4); // Initial 1

私の子供のプログラムで。

> sem_t * serverSem = sem_open(SHAREDSEM, 0);     
sem_wait(serverSem); 
printf("PRINTING\n");  
sem_post(sharedSem);

私の観察では、問題は sem_wait 内にあります。子プロセスで sem_wait の前に発生したことはすべて正常に出力されます。ただし、sem_wait の後の printf() は印刷されません。一度もありません。

私は数時間それに取り組んできましたが、私の問題はわかりません。誰か手を貸してくれませんか?ありがとう。

4

1 に答える 1

0

その動作は、以前の実行で sem_close() が欠落していることが原因だと思います。将来の実行でセマフォの開始値が正しく割り当てられ、sem_wait() が機能するように、セマフォを正しく閉じることを確認してください。

于 2015-06-20T20:04:13.273 に答える