簡體   English   中英

sem_wait無法繼續

[英]sem_wait unable to continue

我有一個產生幾個子進程的進程。 他們都共享一個信號量。

在我的主程序中。

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_close()引起的。 只要確保您正確關閉了信號量,以便將來運行,就可以正確分配信號量的起始值,並且sem_wait()應該可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM