パーソナルツール
現在の場所: ホーム オペレーティングシステム論 演習 2007年度 第3回
文書操作

第3回

作成者 管理者 最終変更日時 2007年05月07日 18時01分

シグナル処理の実験

  1. "Zzz."を出力して1秒間sleep()することを永遠に繰り返すコマンドcatchを作成する.catchはシグナルハンドラを登録していないので,"^C"で中断できることを確認する.
  2. SIGINTを補足すると,"^C"で中断できないことを確認する. コマンドを実行したままでは困るので,端末から"^Z"を入力しサスペンドにして, killコマンドを用いて中断すること.
  3. 別なシェルからkillコマンドでSIGINTを送ってみる.

発展1

SIG_IGNでSIGINTを無視してみる.

発展2

同様に,別なシェルからSIGKILLを送って中断を確認する.

発展3

SIGUSR1にもシグナルハンドラを登録して,別なシェルからシグナルを送信してみる.シグナルの種類は"kill -l"で表示できる.

発展4

SIGSEGVにもシグナルハンドラを登録して,意図的にsegmentation faultを起こしてみる.

発展5

sleep()をSIGALRMとpause()に置き換えること.

発展6

handler() 内の if 文の列を改良せよ.

signal.c
ダウンロード