タグ

ブックマーク / www.nurs.or.jp/~sug (2)

  • Super Technique 講座〜シグナルとコールバック

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

    kkobayashi
    kkobayashi 2008/10/21
    BSD/SystemVのシグナルの違いとPOSIXシグナルが分かりやすくまとまってる。
  • Super Technique 講座~longjmpと例外

    プログラムの流れを制御する手段として、いわゆる「構造化構文(for とか if とか)」、悪名高い「goto 文」などがあるのは周知のことだが、かなり特殊なものとして、「setjmp, longjmp」による「非ローカル分岐」と呼ばれるものがある。この「非ローカル分岐」は「非ローカル」と言うだけあって、ある関数の中から、別な関数に制御を移すことができたりする。まあ、そのために乱用すべきではなく、注意して使わなくてはならないライブラリ関数なのだが、実はこれは JavaC++ で言語の上で実装されている「例外」の基礎となるものである。だから、まずこの標準ライブラリ関数「setjmp, longjmp」について解説しよう。 → Java 講座の「例外」 setjmp, longjmp とは どうやって実現してるの? setjmp/longjmp の利用例~インタプリタ 補追1:setjmp

    kkobayashi
    kkobayashi 2006/12/21
    setjmp/longjmp。凶悪だ・・・
  • 1