为什么 Cygwin 不能运行与 shell/命令行交互的 Windows 应用程序?

为什么 Cygwin 不能运行与 shell/命令行交互的 Windows 应用程序?

最近更新后,Cygwin bash shell 可以适用于任何不需要交互的命令,但如果应用程序需要交互(例如 python shell),它将无法工作,提示符永远不会出现,输入已知的工作命令不会产生任何输出。

我读过其他地方人们建议使用 mintty,但它的行为方式是一样的。

该 shell 具有完全的命令行调用功能,可以运行不需要交互的脚本等等,但是,只要程序询问或有任何提示,它就无法运行。

所有这些看起来都很奇怪,因为 bash 正在执行其他应用程序正在执行的操作,即与用户交互,但所有其他应用程序似乎都被阻止进行交互。

emacs 和 vi 都可以工作,但它们似乎是例外。

cygwin python 也可以运行,但是 windows python 不行,而且我的大多数虚拟环境都是用 windows python 构建的。

答案1

您是指 Windows 交互式应用程序还是 Cygwin 交互式应用程序?

Windows 和 Linux/Unix 使用不同的方法与终端或控制台交互。默认的 Cygwin 终端现在是 mintty,它使用标准的 Unix tty 接口。Windows 控制台应用程序希望能够使用 Windows 控制台接口,该接口与 tty 接口不同,并且不受 mintty 支持。

如果您需要运行 Windows 交互式控制台应用程序,请使用 Windows 控制台或使用控制台界面的可用替代方案之一。使用 Cygwin 的 mintty 时,最好坚持使用 Cygwin 应用程序,至少是交互式应用程序。

答案2

Cygwin Dlls 有时会“出问题”。你重启过吗?也许你想试试 rebaseall :在 Cygwin 上运行 rebaseall或者http://cygwin.wikia.com/wiki/Rebaseall

(这种不稳定性是基于 Windows 上的伪 fork() 实现的)

相关内容