所以我正在记录一些调试信息,将它发送到stdout,然后我把它变成一个字符串。在某个时刻,日志记录完成,应用程序正在等待东西,但grep的输出被截断为中线。所以它匹配一条线,但没有输出所有那条线。
有没有办法强制grep冲洗?
感谢。
更新: 似乎--line-buffered会有所帮助。
答案 0 :(得分:3)
我认为你通过使用--line-buffered标志解决了grep的问题。还要确保您的应用程序在每行之后刷新标准输出。如果您的stdout是终端,则行缓冲是默认设置,但是当您将其传输到另一个程序时,默认是使用完全缓冲。
如果要将数据传输到没有--line-buffered标志的程序(例如uniq),请查看stdbuf程序(http://www.pixelbeat.org/) programming / stdio_buffering / stdbuf-man.html),允许您修改任何程序的缓冲选项。
请参阅http://www.pixelbeat.org/programming/stdio_buffering/,了解该问题以及一些常见解决方案。