現在、サーバープロセスのスレッドごとに複数のクライアントを処理するために kqueue を使用しているため、Signal SIGPIPE が表示されたときにスレッドを終了させたくありません。対応する socked id を kqueue から削除したいだけです。したがって、私の質問は次のとおりです。シグナルハンドル内の適切なソケット ID を取得し、それを解析してプロセスに戻してイベント kqueue から削除する方法はありますか、または SIGPIPE を SIG_IGN に jsut し、-1 を返すことで削除を処理しますか?送信?タイムアウト時間の後に-1値を返すか、すぐにsend -1を返しますか?
そして最後に、信号無視が私の解決策である場合: id の宣言を配置する必要がある場所
typedef void (*sig_t) (int);
sig_t
signal(int sig, sig_t func);
それはメイン関数にある必要がありますか?または対応するスレッドの先頭に?それともグローバル要素として?