次のコマンドを実行すると:
dmesg | head -n 10
私はOSがdmesg
10行を読んだ後に何らかの信号を送り返すと仮定します。head
どのように動作しますか?head
カーネルに何を教えてください。
これは通常の「クリーン」停止なので、プログラムのシャットダウンとは異なります。
ベストアンサー1
これは、オペレーティングシステムのバッファと10番目と11番目の書き込みのタイミングによって異なりますdmesg
。
head
10行を書き込んで終了してdmesg
受信します。SIGPIPE信号パイプに書き続ける場合。
オペレーティングシステムのバッファによっては、通常dmesg
10行以上が使用される前に書き込まれます。head
head
10行以上が使用されていることを確認するには、次のようにします。
strace -f sh -c 'dmesg | head -n 10'
head
(プロセスを見てread
システムコールの回数を計算します。)
書き込み速度に与える影響を確認してください。
strace -f sh -c "perl -le '$|++;print 1 while 1' | head -n 10"