当前位置: 技术问答>linux和unix
多个进程共用一个信号量,如果某个进程死掉,此时又将信号量锁定,其它进程就死掉,有什么办法可以解决这一问题
来源: 互联网 发布时间:2015-10-03
本文导语: 如题。 | 你在调用 semop时,把sembuf中的sem_flag设置为SEM_UNDO,应该可以解决你的问题的. struct sembuf sem_b; sem_b.sem_num = 0; sem_b.sem_op = -1; sem_b.sem_flag = SEM_UNDO; if( semop( sem_id, &sem_b, 1) == -1) ......
如题。
|
你在调用 semop时,把sembuf中的sem_flag设置为SEM_UNDO,应该可以解决你的问题的.
struct sembuf sem_b;
sem_b.sem_num = 0;
sem_b.sem_op = -1;
sem_b.sem_flag = SEM_UNDO;
if( semop( sem_id, &sem_b, 1) == -1)
.....
struct sembuf sem_b;
sem_b.sem_num = 0;
sem_b.sem_op = -1;
sem_b.sem_flag = SEM_UNDO;
if( semop( sem_id, &sem_b, 1) == -1)
.....
|
你应当用心跳信号或某种定时检测机制来探测进程的活动状态,上面的朋友提供的代码给你了一种解锁的可能性,但WatchDog之类的探测机制是必须的。