有一个拥有两个线程守护程序:TH1,TH2。 th2使用read(2)
读取套接字。处理两个结果SIGTERMs
如果我杀死守护进程SIGTERM
,th1捕获并处理信号(设置终止标志),之后守护进程析构函数被调用,它调用pthread_kill(th2, SIGTERM)
。然而,第二个线程不接收SIGTERM
,因此它不会被杀(当套接字接收数据,并从read()
失控,它执行完毕,作为终止标志已设置)。
如果我打电话pthread_kill(th2, SIGUSR2)
,然后pthread_kill(th2, SIGTERM)
,一切都正确完成。因此,UNIX似乎不允许发送相同的信号。
难道这种行为取决于操作系统?我们能否确保指定的线程从另一个线程接收到SIGTERM
?
如果包括适当的编程语言的标签,C,C++,或yourLanguageHere你会得到更多的“眼睛”上你的问题。祝你好运。 – shellter
谢谢,添加了标签。我认为unix的意思是C) – vissi
@vissi:这是错误的。您应该只包含您工作语言的标签。除非你的问题涉及互操作性,否则你只能标记一种语言。 – Puppy