有一個擁有兩個線程守護程序: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