タグ

2015年9月29日のブックマーク (2件)

  • Linux シグナル入門 - 6. SIGALRM と sigaction システム・コール

    2013-11-6, 2013-12-3 (鈴) 1. シグナルとは? 2. シグナル・ハンドラと signal システム・コール 3. シグナルの用途 4. SIGHUP, SIGINT, SIGTERM 5. SIGCHLD 6. SIGALRM と sigaction システム・コール 7. siglongjmp による大域脱出 8. popen/pclose と SIGCHLD Linux を含む Unix 類はプロセスごとに一つずつセルフタイマーのようなものを持つことができる。 このタイマーはシステム・コール alarm(2) でセットできる。 unsigned int alarm(unsigned int seconds); 引数 seconds の値はタイマーが切れるまでの秒数または 0 である。 0 のときはタイマーをセットしない。 戻り値は,呼び出し前にタイマーがセットさ

  • 安全なシグナルハンドラを実装するには ――C/C++セキュアコーディング入門(4)

    UNIXなどPOSIX準拠のOSでは、割り込みや例外を抽象化した「シグナル」と呼ばれる仕組みを用いてプロセスに(非)同期イベントが通知されますが、シグナルハンドラで行える処理には制約があり、これを無視したコードを書くと脆弱性につながる恐れがあります。今回はシグナルハンドラの制約に関するルールを見てみましょう。 シグナルハンドラの制約 UNIXなどPOSIX準拠のOSでは、割り込みや例外を抽象化した「シグナル」と呼ばれる仕組みを用いてプロセスに(非)同期イベントが通知されます。ユーザが[Ctrl]-[C]キーを押してプログラムを中断しようとしたり(SIGINT)、整数オーバーフローが発生したり(SIGFPE)すると、それらのイベントに対応するシグナルがカーネルからプロセスに対して通知されるのです。プログラマは、これらのシグナルを受信した時に特定の動作を行わせる「シグナルハンドラ」を書くことが

    安全なシグナルハンドラを実装するには ――C/C++セキュアコーディング入門(4)