Bashで実行されると、私のプログラムはどのプロセスグループに属していますか?

Bashで実行されると、私のプログラムはどのプロセスグループに属していますか?

プログラムを最初から実行する場合、bash私のプログラムはシェルと同じプロセスグループに属していますか、それとも新しいプロセスグループに属していますか?

シェルを作成するとき、信号を処理する必要がありますSIGINT

Ctrl+はフォアグラウンドにありますが、同じプロセスグループに属するプロセスにシグナルを送信しますCSIGINT

Bashセッションを終了できません。

ベストアンサー1

bash-4.3$ ps -j | cat
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4600  4600  4586 pts/1    00:00:00 ps
 4601  4600  4586 pts/1    00:00:00 cat
bash-4.3$ ps -j; ps -j
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4602  4602  4586 pts/1    00:00:00 ps
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4603  4603  4586 pts/1    00:00:00 ps

インタラクティブシェル働くこれはプロセスグループを通じて達成される。対話型シェルジョブを実行するためのプロセスグループが作成されます。対話型シェルは、プロセスグループと実際に混在する唯一のコマンドです。

上記はps -j | cat(フロント)業務です。両方pscat同じプロセスグループにある場合、シェルはそれを端末のフォアグラウンドプロセスグループにし、^CSIGINTをそれらに送信します。

2番目の例では、2つの連続した操作があります。

存在する

bash-4.3$ (ps -j; ps -j)
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4633  4633  4586 pts/1    00:00:00 bash
 4634  4633  4586 pts/1    00:00:00 ps
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4633  4633  4586 pts/1    00:00:00 bash
 4635  4633  4586 pts/1    00:00:00 ps

サブシェルは職業です。サブシェル自体は非対話型シェルと見なすことができます。

おすすめ記事