タグ

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

  • Linux日和~リアルタイムシグナル1~

    標準シグナルとリアルタイムシグナルの比較を行ってみたいと思います。今回はまず標準シグナルの場合です。プログラムの動きとしてはシグナルハンドラーが起動された回数を1秒おきに表示させたいと思います。 (注)今回は実験の為にシグナルハンドラー内で無駄な処理を行い重たくしてあります。シグナルハンドラーはできるだけ軽く作るのが鉄則です。また、実際に動作させると1秒おきに表示がでないことが分かると思いますが、これについては次回以降解説します。 /* * sample program * signal handler (SIGUSR1) */ #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <string.h> #include <time.h> #include <unistd.h> #include <errno

  • シグナル(その4)-システムコール再実行(sleep) - Linuxの備忘録とか・・・(目次へ)

    システムコールで待機中にシグナル配信処理が行われると、そのプロセスは起床され(TASK_RUN状態)、シグナル処理が動作する様なっていました。そして待機中だったシステムコールは、システムコールの返り値により、シグナル処理後再実行等の処理が行われるようになっていました。返り値とは、ERESTARTNOHAND/ERESTARTSYS/ERESTARTNOINTR/ERESTART_RESTARTBLOCK です。シグナル(その3)時の理解では、この値は該当システムコール自身が設定するものと理解しましたが、ついでと言うことで調べるて見ました。 ERESTART_RESTARTBLOCKについては、スリープで待機した時間を考慮して、再実行するものでした。ということでシステムコールsleep内で、ERESTART_RESTARTBLOCKがどのように設定されるかを見てみようと思います。 スリープは

  • 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

  • 1