linux下信号量的释放的问题

时间:2022-03-24 05:16:29
程序在结尾处会调用semctl的IPC_RMID命令,进行删除semaphore的操作,但是如果程序被用户杀死(比如说:ctrl+c),那么这时的信号量将不会被删除,求教:有没有什么一般性的经验做法,处理这一类问题,谢谢

4 个解决方案

#1


不会吧 

#2


引用 1 楼 yong_f 的回复:
不会吧
什么不会?

#3


可以捕获SIGINT,然后在信号处理函数中进行IPC_RMID

但是如果进程是被kill -9杀死的,那就没招了

#4


引用 3 楼 justkk 的回复:
可以捕获SIGINT,然后在信号处理函数中进行IPC_RMID

但是如果进程是被kill -9杀死的,那就没招了


十分感谢啊,,,我刚查了下,,,ctrl+c是SIGINT,这样就可以了,只有SIGKILL SIGSTOP的信号处理函数不能被修改,,,再次谢谢哈

#1


不会吧 

#2


引用 1 楼 yong_f 的回复:
不会吧
什么不会?

#3


可以捕获SIGINT,然后在信号处理函数中进行IPC_RMID

但是如果进程是被kill -9杀死的,那就没招了

#4


引用 3 楼 justkk 的回复:
可以捕获SIGINT,然后在信号处理函数中进行IPC_RMID

但是如果进程是被kill -9杀死的,那就没招了


十分感谢啊,,,我刚查了下,,,ctrl+c是SIGINT,这样就可以了,只有SIGKILL SIGSTOP的信号处理函数不能被修改,,,再次谢谢哈