0
我有一個進程產生幾個子進程。他們都共享一個信號量。sem_wait無法繼續
在我的主程序中。
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()將永遠不會打印。一次也沒有。
我一直在它幾個小時,我看不到我的問題。任何人都可以伸出援手嗎?謝謝。
信號量是否被初始化(sem_init)?由於信號量值爲零,所以sem_wait()調用被阻塞。 – suspectus 2013-02-23 23:05:25
如果我刪除sem_posit,sem_post之後的任何內容都不會打印。似乎任何sem_函數都會阻塞。 – user1305850 2013-02-23 23:10:36
您是否檢查過sem_open()調用是否成功? – suspectus 2013-02-23 23:16:39