繁体   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