我目前正在使用 kqueue 来处理 Serverprocess 中每个线程的多个客户端,因此我不希望在 Signal SIGPIPE 出现时终止线程,我只想从 kqueue 中删除相应的 socked id。所以我的问题是:有没有办法在 Signalhandle 中获取相应的 socketid 并将其解析回进程以将其从事件 kqueue 中删除,或者我是否可以让 SIG_IGN SIGPIPE 并通过从 -1 返回来处理删除发送?它会在超时时间后返回 -1 值还是立即返回 send -1?
最后,如果信号忽略是我的解决方案: id 必须在哪里放置声明
typedef void (*sig_t) (int);
sig_t
signal(int sig, sig_t func);
它必须在主要功能中吗?还是在相应线程的开头?还是作为全局元素?