タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

freebsdとcに関するh6nのブックマーク (1)

  • C言語 FreeBSD setjmp longjmpで大域ジャンプをする

    このドキュメントの内容は、以下の通りです。 サンプルコード コンパイル 実行例 実行環境について Unixのプログラムでは、処理中にシグナルを受信した場合に、シグナル受信前に行っていた処理をやめて、ほかのことをするプログラムを書くときなどに、setjmpとlongjmpを利用することがあります。 想定した時間を超えた場合に処理をやめるときなどにも利用できます。 ある意味 goto 文みたいなものなので、多用すると訳が分からなくなるので利用には注意が必要です。 サンプルコード 早速、サンプルコードです。 このプログラムは、alarm()でシグナルを発生されます。 シグナルが発生すると timeout() が呼び出されるようになっています。 まず、setjmp()で戻るべき場所を決めます。 alarm()を呼び出し、sleep()でプログラムが眠ります。 sleep()で寝ていある間に、ala

    h6n
    h6n 2011/03/24
    [setjmp/longjmp]
  • 1