プロセスグループは通常いつ作成されますか?

プロセスグループは通常いつ作成されますか?

他のプログラムの多くのインスタンスを生成するプログラムがあります。サブプロセスを生成したり、時には誤ってデーモン化したりする場合でも、タイムアウト後にそれを終了するためのきちんとした方法があったらと思います。

次に、プロセスグループアプローチを使用します。各インスタンスは独自のプロセスグループで実行され、インスタンスを終了したいときにグループ全体にシグナルを送信します。これまでうまく動作しているようです。

しかし、新しいプロセスグループを作成することで私のコントロールから抜け出すのは簡単です。これらのプログラムは本質的に悪意ではありませんが(したがって、意図的にこれを行うわけではありません)、非常に混乱する可能性があります。 Pythonスクリプト、醜いシェルスクリプトなど、何でも構いません。

だから私の質問は、プロセスグループが一般的にいつ作成されるのかということです。私の観察によると、対話型シェルはこれを生成しますが、非対話型シェルはそうではありません。たとえば、非対話型スクリプトでも新しいプロセスグループを作成する傾向がある高度なシェル構成はありますか?

答え1

「時々誤ってプロセスをデーモン化すること」が問題になることがあります。デーモン化の一部は、プロセスグループとの接続を解除することです。たとえば、次を参照してください。DaemonizeのページまたはUnix プログラミングに関するよくある質問

それに加えて、私が[*]に遭遇したのは、scriptコマンドの出力をキャプチャするためにそれを使用する必要があることです(たとえば、ターミナルとパイプに接続されたときに動作が異なるため)。scriptそうすると、setsidプロセスグループも起動します。

スクリプト内でジョブ制御をオンにすることもできます。これにより、トリックを実行することもできます。しかし、これがどれくらい一般的かはわかりません。

mpv[*]私は個人的にa内で実行され、script出力を解析するためによく使用されるスクリプトを持っています。

関連情報