Yash 2 その 130: suspend コマンド 再び
suspend コマンドに -f オプションを付けた。
今までは suspend コマンドは問答無用でシェルを停止させていたのだが、シェルが対話モードであってかつシェルの初期プロセスグループ ID がセッション ID に等しいときは -f オプションを付けないと停止させないようにした。
シェルの初期プロセスグループ ID がセッション ID に等しいときは、シェルのプロセスが属しているそのプロセスグループにはセッションリーダーが含まれている。セッションリーダーが他のシェルによるジョブ制御の対象となっていることは普通あり得ないので、セッションリーダーを停止させるとほぼ間違いなく嵌まる。従って、この場合には停止させようとしてもエラーにして停止しないのが得策と思われる。
一方シェルがセッションリーダーとは別のプロセスグループに属しているときは、プロセスグループを起動させた親プログラムが何らかのジョブ制御を行っていると考えられるので、停止させてもおそらく安全だろう。
ここでいう初期プロセスグループとはシェルが起動された時のシェルのプロセスグループのこと。ジョブ制御が有効な時、シェルは自分自身のプロセスグループを変更することがあるが、その変更前のプロセスグループをいう。
| 固定リンク
コメント