此問題可能與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