2

プロセスが「&」で開始されると、bash は新しいプロセスをフォアグラウンド グループに短時間配置し、その後自身をフォアグラウンド グループに戻します。

私の知る限り、「&」バックグラウンド演算子なしで外部コマンドを実行すると、シェルはコマンドの新しいプロセス グループを作成し、このプロセス グループが現在フォアグラウンドにあることを端末に通知します。「&」を指定して実行する場合、フォアグラウンド プロセス グループを変更してはなりません。

LinuxでCプログラムを使用しました。これは、フォアグラウンドプロセスグループと独自のプロセスグループを開始時に印刷し、スリープ後に同じものを印刷します。

次の結果が得られます。

tcgetpgrp=19981 getpgrp=19981
sleep(5)
tcgetpgrp=11996 getpgrp=19981

この例では、11996 が bash の pid です。

この動作に気付いたのは、 as(./test&)および高負荷下で実行した場合のみです ( as ではありません./test&)。

bash は正しい方法で動作していますか?

バッシュのバージョン: 4.4.12

編集

@Costi によって提案された pid 値を追加しました。

tcgetpgrp=29148 getpgrp=29148 getpid=29149
sleep
tcgetpgrp=28566 getpgrp=29148 getpid=29149

28566 は bash の pid です

4

1 に答える 1