睡眠のさまざまな行動を説明し、邪魔されたときに待つ方法

睡眠のさまざまな行動を説明し、邪魔されたときに待つ方法

私はsleep間の微妙さを理解しようとしていますsleep & wait

  1. スクリプトを実行するとtest.sh
#!/bin/bash
sleep 10000

ある端末とps -aef --forest別の端末から見ると

myuser   14355   14113  0 23:26 pts/5    00:00:00  |           \_ /bin/bash ./test.sh
myuser   14356   14355  0 23:26 pts/5    00:00:00  |               \_ sleep 10000

sleepプロセス()に割り込みを送信すると、プロセスはkill -INT 14356すべて終了します。bashsleep

  1. 最後の行test.shなら
sleep 10000 & wait

また走ってps理解して

myuser   14381   14113  0 23:31 pts/5    00:00:00  |           \_ /bin/bash ./test.sh
myuser   14382   14381  0 23:31 pts/5    00:00:00  |               \_ sleep 10000

割り込みを送り返すとsleep何も起こりません。ただし、bashプロセスを終了できます。

https://pubs.opengroup.org/onlinepubs/009695399/utilities/trap.html説明する

無視されないトラップは、サブシェルに入るとデフォルトの動作に設定されます。

私が見ると、スリープのデフォルト動作は割り込み時に終了するようです(単にsleep 100001つの端末で実行してから別の端末で割り込みしようとすると終了します)。

2では直接中断できませんが、sleep1では中断できるのはなぜですか?

関連情報