0

我有一个进程产生了一些子进程。它们都共享一个信号量。

在我的主程序中。

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() 永远不会打印。一次都无。

我已经做了几个小时了,我看不到我的问题。任何人都可以伸出援助之手吗?谢谢。

4

1 回答 1

0

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

于 2015-06-20T20:04:13.273 回答