タグ

POSIXとシグナルに関するakaneharaのブックマーク (2)

  • SIG30-C. シグナルハンドラ内では非同期安全な関数のみを呼び出す

    SIG30-C. シグナルハンドラ内では非同期安全な関数のみを呼び出す シグナルハンドラ内では非同期安全な関数のみを呼び出すこと。厳密に合致するプログラムでは、C 標準ライブラリ関数 abort()、_Exit()、および signal() をシグナルハンドラ内から呼び出すことができる。 C 標準 [ISO/IEC 9899:2011] セクション 7.14.1.1、第 5 段落には、シグナルが abort() または raise() 関数の呼び出し以外によって発生し、次の条件が該当する場合には、動作は未定義になると規定している。 シグナル処理ルーチンが、この規格で規定するライブラリ中の関数を呼び出す場合。ただし、abort 関数、_Exit 関数、又は、シグナル処理ルーチンの呼出しを発生させたシグナルに対応するシグナル番号を第 1実引数として signal 関数自身を呼び出す場合を除く。

    SIG30-C. シグナルハンドラ内では非同期安全な関数のみを呼び出す
  • Super Technique 講座〜シグナルとコールバック

    この文書ではまず、関数ポインタとその型チェックについて述べた後で、UNIXのシグナル機能について解説する。そして、ウィンドウシステムのプログラミングで多用される「コールバック」について解説する。 ちなみにシグナルの機能は質的には UNIX に固有である。他のOSにもないわけではないが、その異同については筆者は関知しない。また、UNIXでのシグナルの実装については Linux を基準に解説をしていく。UNIX シグナルは、実は具体的な実装において大変差がある機能なのだが、一応 POSIX で「こう実装しなさい」という風に決まってはおり、後発の Linux は比較的マジメにそれを実装しているので、まあ、Linux を基準にするのが無難というものであろう(ユーザ比の問題を別にしても)。勿論、伝統的に重要ないわゆる「SysVシグナル」「BSDシグナル」についてもしっかりと解説しているが、もはや「

    akanehara
    akanehara 2016/03/15
  • 1