5

そのため、デバッグ情報をログに記録し、それを stdout に送信してから、文字列を grep します。ある時点で、ロギングが完了し、アプリケーションが何かを待っていますが、grep の出力は途中で切り捨てられます。したがって、行に一致しましたが、その行のすべてを出力しませんでした。

grep を強制的にフラッシュする方法はありますか?

ありがとう。

更新: --line-buffered が役立つようです。

4

1 に答える 1

3

--line-buffered フラグを使用して grep で問題を解決したと思います。また、アプリケーションが各行の後に stdout をフラッシュしていることを確認してください。stdout が端末の場合、行バッファリングがデフォルトですが、それを別のプログラムにパイプすると、デフォルトでフル バッファリングが使用されます。

--line-buffered フラグを持たないプログラム (uniq など) にデータをパイプする場合は、stdbuf プログラム (http://www.pixelbeat.org/programming/stdio_buffering/stdbuf) を参照してください。 -man.html) を使用すると、任意のプログラムのバッファリング オプションを変更できます。

問題の概要といくつかの一般的な解決策については、http://www.pixelbeat.org/programming/stdio_buffering/を参照してください。

于 2011-07-15T13:02:23.083 に答える