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