[英]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.