2
我有兩個使用System V共享內存進行通信的程序。是否有可能將System V共享內存與POSIX信號量一起使用?
這兩個程序都按照他們應該的方式工作,但我想添加命名的信號量以避免競爭條件。
我曾嘗試以下:
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共享內存時甚至有可能使用這些信號量?