unbuffer(1)とstdbuf(1)に違いはありますか?私が収集したものから、unbufferは、最初にlibc関数set(X)bufを呼び出してから、物事をそのままにするという「最善の努力」以上のものを作成しますか?
承認された回答:
それらは完全に異なる方法で機能します。
プログラムunbufferは、expectを使用して名前付きコマンドを実行します。 expectは子プロセスのstdoutにアタッチする疑似ttyを作成するため、子はブロックバッファリングの代わりにラインバッファリングを使用する必要があると騙されて考える可能性があります。 isatty(stdout)が真の場合、一部のプログラムは動作を変更しますが、他のプログラムは変更せず、どちらが変更され、どちらが変更されないかを判断するのは非常に困難です。
プログラムstdbufは、動的にロードされたバイナリーのlibcの前にlibstdbufを配置しようとします。ここで、libstdbufは、libcstdio呼び出しのデフォルトのバッファリング戦略を再定義します。
私はこれを見つけました
apt-get source expect coreutils
各プログラムに関連するソースを読みます。