我在Windows上使用msys和mintty mingw。我有一个问题,msys和mintty不知何故在命令完成之前不会刷新输出。这意味着我无法真正运行任何互动程序。
例如,如果我在C
:
printf("Test\n");
在程序终止之前,输出不会出现。但是,如果我有:
printf("Test\n"); fflush(stdout);
然后立即出现输出。如果我使用没有薄荷的msys或Windows控制台,那么一切正常。
所以我的问题是,msys和mintty发生了什么?
答案 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"
...然后重新启动终端,并忽略(一次性)警告消息。