我目前使用kqueue來處理服務器進程中的每個線程的多個客戶端 所以我不希望線程在信號SIGPIPE出現時被終止,我只想刪除來自kqueue的相應socked ID。 所以我的問題是:有沒有辦法獲得一個Signalhandle中相應的socketid,並將其解析回進程以將其從事件kqueue中刪除,或者我是否有SIG_IGN SIGPIPE ,並通過返回 - 1發送?並且會在超時時間後返回-1值還是立即返回-1?在哪裏申報SIGPIPE sig_t信號
最後,如果信號忽略的是我的解決方案:其中id必須把的
typedef void (*sig_t) (int);
sig_t
signal(int sig, sig_t func);
聲明難道必須要在主函數? 還是在相應的線程開頭?或僅僅是全球元素?
對send()的結果做出反應至少是更便攜的,所以對我來說似乎是更好的方式。無論如何,我很好奇,如果有人有答案(+1) –
好吧,也許我表達了我的問題再次壞了,但儘可能使用返回的send(),我只是想知道,在哪裏我必須把sig_t信號(SIGPIPE,SIG_IGN);讓信號被忽略 – dhein