msys没有刷新输出

时间:2016-01-31 00:53:34

标签: mingw msys mintty

我在Windows上使用msys和mintty mingw。我有一个问题,msys和mintty不知何故在命令完成之前不会刷新输出。这意味着我无法真正运行任何互动程序。

例如,如果我在C

printf("Test\n");

在程序终止之前,输出不会出现。但是,如果我有:

printf("Test\n"); fflush(stdout);

然后立即出现输出。如果我使用没有薄荷的msys或Windows控制台,那么一切正常。

所以我的问题是,msys和mintty发生了什么?

2 个答案:

答案 0 :(得分:2)

msys 在多种情况下使用 rxvt shell时,这可能是一个问题。在我看到这个问题的情况下,我要求msys使用本机Windows shell作为其控制台。例如:

C:\MinGW\msys\1.0\msys.bat --no-rxvt

我认为现代MSYS安装默认使用本机shell,因为MSYS开发人员似乎更喜欢它。我有本机shell的其他问题驱使我使用 rxvt shell,所以我不经常遇到这个问题。

C:\MinGW\msys\1.0\msys.bat --rxvt

我发现 rxvt shell通常可以正常工作,除了某些构建为" console"实用程序意味着从命令行运行。

答案 1 :(得分:0)

对我唯一有用的是在命令前加上winpty ...

$ winpty java ClassName

这会使无缓冲的输出慢3倍,使缓冲的输出慢5倍(在我的情况下,对于Java)。


总是有一个winpty ...

不可见地调用的命令
$ cd ~
$ pwd -W

...将以下行添加到.bashrc ...

alias java="winpty java"

...然后重新启动终端,并忽略(一次性)警告消息。