`cat`のI / Oモデルは他のユーティリティとどう違いますか?

`cat`のI / Oモデルは他のユーティリティとどう違いますか?

stdbuf --help(GNU)の出力から:

Usage: stdbuf OPTION... COMMAND
Run COMMAND, with modified buffering operations for its standard streams.
...

NOTE: If COMMAND adjusts the buffering of its standard streams ('tee' does
for example) then that will override corresponding changes by 'stdbuf'.
Also some filters (like 'dd' and 'cat' etc.) don't use streams for I/O,
and are thus unaffected by 'stdbuf' settings.

この文脈では、「I / Oストリーム」の正確な定義が何であるか、そしてそれが正確にどのように適用されるのかcat混乱しています。標準I/Oストリームを使用しない場合は何を使用しますか?関連マニュアルページとウェブ検索では追加の洞察を提供できませんでした。

ベストアンサー1

ddまた、バッファリングされたC stdio関数(、、、、)の代わりに、およびシステムコールを直接cat使用するため、stdioへの変更は影響しません。read(2)write(2)fread(3)fwrite(3)printf(3)

stdbuf(1)デフォルトでは、プログラムが使用するバッファリング戦略ではなく、ユーザーが必要とするバッファリング戦略を使用するためにstdioの一部の機能をオーバーライドする小さな動的ライブラリ(MacLD_PRELOADまたはで使用)をプリロードして動作します。DYLD_INSERT_LIBRARIES

おすすめ記事