此问题可能与Emacs无关,但与所有使用Console进行调试过程的开发环境无关。这是问题。我使用Eshell来运行我们正在开发的应用程序。这是一个J2ME应用程序。而对于调试,我们只使用System.out.println()
。现在,假设我只允许在控制台中显示以Eko:
开头的文本(交互式),有可能吗?如何仅允许在Emacs控制台上打印某些文本?
我在我的Windows环境下安装了Cygwin,并尝试grep
这样的输出: run | grep Eko:
。它确实只以Eko:
作为开始,过滤输出,但它不是交互式的。输出压缩,直到应用程序退出。那么,无论如何,这是无用的。
是否可以做到这一点?我的意思是,我们不必触摸应用程序代码本身?
我也标记到Linux,因为也许Linux中的一些人知道答案。
非常感谢!
非常好! 还有一个非常详细的解释... 非常感谢。这在这里会帮助我们很多。谢谢 – swdev 2011-03-04 04:19:52
顺便说一句,我只是在DOS命令窗口中测试没有'-line-buffered'的'grep'。有用。那么,为什么我们需要在Emacs Shell中使用'--line-buffered',而不是在DOS命令窗口中?我很抱歉,如果在你的解释中你已经解释了它。我只是有时间去了解它:) 非常感谢 – swdev 2011-03-04 04:32:07
@swdev:以终端作为输出,标准C库将'stdout' stdio流设置为行缓冲。但是,当'stdout'流设置为管道(因为我想它是在Emacs缓冲区中),那么C库将执行块缓冲。默认是在文件描述符上调用'fstat(2)',并为缓冲区使用'st_blksize'字节。这通常是4k或8k,但其他值也是可能的。 'setvbuf(3)'手册页包含所有细节。 :) – sarnold 2011-03-04 04:37:35