タグ

signalに関するakaneharaのブックマーク (3)

  • 世にも恐ろしいSIGPIPE、ソケットプログラミングの落とし穴 - 百日半狂乱

    前回、「次回もシグナルのことを書く」と書いたのでシグナルのことを書く*1. ソケットプログラミングの落とし穴は色々あるけど、ここでは個人的に嵌ったシグナル関連の落とし穴に関して書き殴る. 結論から書くと、コネクションが切れたソケットに書き込み(send(2)とかwrite(2)とか、同じものだけど)を行うと、SIGPIPEシグナルが発生してプロセスが強制終了するので、きちんとSIGPIPEシグナルをハンドリングしておこうという話. 以下では、サンプルコードを使って、実際にパイプの書き込み先をkillして、SIGPIPEの発生を疑似体験してみる. SISGPIPEを受けたプロセスの挙動とソケットプログラミングでの対応策 「sigpipe」で検索すると、同様の話はいくらでも記事になっていて、例えば、 「私の書いたサーバが突然死するんです。どうしてでしょうか」という質問を受けることがあります。こ

    世にも恐ろしいSIGPIPE、ソケットプログラミングの落とし穴 - 百日半狂乱
  • Linux シグナル入門

    2013-11-5 (鈴) 1. シグナルとは? 2. シグナル・ハンドラと signal システム・コール 3. シグナルの用途 4. SIGHUP, SIGINT, SIGTERM 5. SIGCHLD 6. SIGALRM と sigaction システム・コール 7. siglongjmp による大域脱出 8. popen/pclose と SIGCHLD 1. シグナルとは? プロセスが止まらないとき,キーボードから Control-C を打鍵して止めることがよくある。 何もプログラムに Control-C の入力を処理するコードを書いたわけではないのに止まる。 なぜ止まるのだろう。 01:~/tmp$ cat forever.c int main() { for (;;) { } return 0; } 01:~/tmp$ gcc forever.c 01:~/tmp$ ./a

  • Linux シグナル入門 - 4. SIGHUP, SIGINT, SIGTERM

    2013-11-5 (鈴) 1. シグナルとは? 2. シグナル・ハンドラと signal システム・コール 3. シグナルの用途 4. SIGHUP, SIGINT, SIGTERM 5. SIGCHLD 6. SIGALRM と sigaction システム・コール 7. siglongjmp による大域脱出 8. popen/pclose と SIGCHLD Linux などの Unix 類ではプロセスを終了させる事象のうち,次の3種類のシグナルの発生は当然起こり得るものとして想定しなければならない。 SIGHUP (= 1, hangup) 端末終了時に発生。元来はモデムの受話器をあげて通信を切ったことから SIGINT (= 2, interrupt) Control-C による中断 SIGTERM (= 15, termination) kill コマンドでシグナル無指定時に送

  • 1