Yash 2 その 132: シグナル処理方針の変更
シェルが内部で使用している printf などの関数がシグナルハンドラにより割り込まれてエラーになる問題を解決するために、シグナルハンドラを設定したシグナルは常時ブロックすることにした。
シェルが受信したシグナルを処理すべきタイミングは以下の三つ。これらのタイミングでのみシグナルのブロックを解除してシグナルを受け入れる。
- シェルがコマンド等の入力を待つ時
- シェルが子プロセスの終了を待つ時
- トラップを処理する時
全てのシグナルを常にブロックする案は POSIX の規定に反するので却下。
これ以外にもいろいろシグナル周りのコードの書き換え中。いい加減シグナルのことはこれきりにしたい。
| 固定リンク
コメント