から: http://www.utdallas.edu/~kcooper/teaching/5375/fall08/Tutorial8/tutorial8.htm
(セクション「C プログラムでの bash スリープとスリープの違い」):
bash sleep コマンドと C プログラムの sleep 関数の動作には大きな違いがあります。C プログラムのスリープ機能は単純な関数呼び出しです。呼び出されると、CPU を必要とする他のプロセスをスケジュールできるように、オペレーティング システムに CPU を明け渡します。次に、指定された秒数が経過すると、スリープを呼び出したプロセスが再び機能し始めます。
sleep コマンド bash の動作は異なります。このコマンドが呼び出されると、それ自体の子プロセスが作成されます。指定された秒数の間実行された後、終了して呼び出しプロセスに戻ります。
- なぜbashスリープはとても複雑なのですか? (なぜ fork によって bash sleep が実現するのか?)
- bashスリープがCスリープのようにならないのはなぜですか?