这个问题可能与Emacs无关,而是与使用Console进行调试的所有开发环境有关。这是问题所在。我使用Eshell来运行我们正在开发的应用程序。这是一个J2ME应用程序。对于调试,我们只使用System.out.println()
。现在,假设我想只允许以Eko:
开头的文本在控制台中显示(交互式),是否可以?
我在Windows环境中安装了Cygwin,并尝试grep
输出如下:
run | grep Eko:
。它肯定只过滤了Eko:
作为开头的输出,但它不是交互式的。输出被抑制,直到应用程序退出。好吧,无论如何那都没用。
有可能吗?我的意思是,我们不必触及应用程序代码本身?
我也标记到linux,因为Linux中的某些人可能知道答案。
非常感谢!
答案 0 :(得分:1)
简短:尝试将--line-buffered
添加到grep
命令。
长:我假设您的应用程序正在使用每个System.out.println()
刷新其输出流,并且grep
具有可立即读取的行,但是选择缓冲输出直到它“足够” '保存的输出使写作有意义。 (这通常是4k或8k的数据,可能是几百行,具体取决于你的行长。)
当输出是管道中的另一个程序时,这种缓冲很有意义;减少不必要的上下文切换是提高程序吞吐量的好方法。
但是如果您的打印速度足够慢以至于它没有足够快地填充缓冲区以进行“实时”输出,那么切换到行缓冲输出可能会修复它。