【发布时间】:2015-09-30 03:05:44
【问题描述】:
我有两个使用 System V 共享内存进行通信的程序。
两个程序都可以正常工作,但我想添加命名信号量以避免竞争条件。
我尝试了以下方法:
sem_t *sem = sem_open("/semaphorename", O_CREAT | O_EXCL, S_IRUSR | S_IWUSR, 0);
if(sem == SEM_FAILED){
sem = sem_open("/semaphorename", 0);
}
while(1){
/*get input from user */
sem_wait(sem);
/* write to shared memory. If QUIT is entered, break from while loop */
sem_post(sem);
}
sem_close(sem);
sem_unlink("/semaphorename");
没有信号量,程序可以工作,但没有信号量,没有任何东西写入共享内存。我做错了什么,甚至可以在使用 System V 共享内存时使用这些信号量吗?
【问题讨论】:
标签: posix semaphore shared-memory