他のプログラムの多くのインスタンスを生成するプログラムがあります。サブプロセスを生成したり、時には誤ってデーモン化したりする場合でも、タイムアウト後にそれを終了するためのきちんとした方法があったらと思います。
次に、プロセスグループアプローチを使用します。各インスタンスは独自のプロセスグループで実行され、インスタンスを終了したいときにグループ全体にシグナルを送信します。これまでうまく動作しているようです。
しかし、新しいプロセスグループを作成することで私のコントロールから抜け出すのは簡単です。これらのプログラムは本質的に悪意ではありませんが(したがって、意図的にこれを行うわけではありません)、非常に混乱する可能性があります。 Pythonスクリプト、醜いシェルスクリプトなど、何でも構いません。
だから私の質問は、プロセスグループが一般的にいつ作成されるのかということです。私の観察によると、対話型シェルはこれを生成しますが、非対話型シェルはそうではありません。たとえば、非対話型スクリプトでも新しいプロセスグループを作成する傾向がある高度なシェル構成はありますか?
ベストアンサー1
「時々誤ってプロセスをデーモン化すること」が問題になることがあります。デーモン化の一部は、プロセスグループとの接続を解除することです。たとえば、次を参照してください。DaemonizeのページまたはUnix プログラミングに関するよくある質問。
それに加えて、私が[*]に遭遇したのは、script
コマンドの出力をキャプチャするためにそれを使用する必要があることです(たとえば、ターミナルとパイプに接続されたときに動作が異なるため)。script
そうすると、setsid
プロセスグループも起動します。
スクリプト内でジョブ制御をオンにすることもできます。これにより、トリックを実行することもできます。しかし、これがどれくらい一般的かはわかりません。
mpv
[*]私は個人的にa内で実行され、script
出力を解析するためによく使用されるスクリプトを持っています。