sem_wait无法继续

时间:2013-02-23 22:28:50

标签: c concurrency ipc multiprocessing semaphore

我有一个过程会产生一些子进程。他们都共享一个信号量。

在我的主程序中。

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()将永远不会打印。甚至没有一次。

我已经在那里待了几个小时,我看不出我的问题。任何人都可以伸出援手吗?感谢。

1 个答案:

答案 0 :(得分:0)

我认为这种行为是由于先前运行中缺少sem_close()引起的。 只需确保正确关闭信号量,以便在将来运行时正确分配信号量的起始值,并且sem_wait()应该有效。