vis*_*ssi 3 c c++ unix signals sigterm
有一个守护进程有两个线程:th1,th2.th2使用读取套接字read(2)
.
如果我杀死守护进程SIGTERM
,th1捕获并处理信号(设置终止标志),之后调用守护进程析构函数,它会调用pthread_kill(th2, SIGTERM)
.但是,第二个线程没有收到SIGTERM
,所以它不会被杀死(当套接字接收数据并从中获取时read()
,它完成执行,因为已经设置了终止标志).
如果我打电话pthread_kill(th2, SIGUSR2)
,然后pthread_kill(th2, SIGTERM)
,一切都正确完成.因此,UNIX似乎不允许发送相同的信号.
这种行为是否依赖于操作系统?我们可以确保指定的线程SIGTERM
从另一个线程接收吗?