Cygwin终端缓冲STDOUT

时间:2016-06-08 15:34:05

标签: bash terminal cygwin pty io-buffering

我使用Altera Quartus软件,它附带了自己的Cygwin发行版和一个哑终端,根据Altera的开始菜单中的快捷方式,它使用

运行
cmd.exe /c "c:\altera\15.1\nios2eds\NiosII Command Shell.bat"

此批处理文件为Quartus配置环境并启动bash。当我使用这个窗口运行Altera工具时,它们的输出会立即(不是缓冲)和颜色显示出来。

我也有自己的Cygwin安装,带有Xserver和终端(即lxterminal,mrxvt,xfce4-terminal等)。我已经调整了Altera的批处理文件来在我的Cygwin中配置Altera的环境,我可以运行所有Altera的工具。但是,当我运行这些工具时,它们的输出既不是彩色的(不是很大但令人惊讶),并且在所有输出同时出现时被缓冲直到执行结束。

有没有人对如何绕过这种缓冲有任何想法?

1 个答案:

答案 0 :(得分:0)

以某种方式,您的工具认为输出不是终端而是文件。对于文件,该工具本身将创建一个缓冲区(在Linux上为4K)。对于终端,输出通常是行缓冲的(即,输出代码将收集所有字符,直到检测到行尾,然后一次打印所有字符)。

为进一步帮助您,我们需要更多信息,您如何“修改Altera的批处理文件以在我的Cygwin中配置Altera的环境”