终端中的Cygwin输出与Windows控制台不同

时间:2013-05-23 10:56:11

标签: cygwin

我有一个程序在Windows控制台(conhost.exe)中运行时显示一些输出,并且在使用完全相同的参数在Cygwin下运行时根本没有输出。

什么可能导致这样的问题?

我测试了$ C:/Windows/zip.exe --help,他们都返回了相同的输出。 (也许这不是标准但是错误输出)

命令行是:

./Bin/Release/MyExe.exe regtest ./QCE/RegressionTests/AutoTests/AutoGenerated/T1/RegTest_PV_Loan.tst

该程序是一个非标准程序,我们没有源代码。

编辑:我被告知该程序使用此调用检查它是否在控制台中运行,该调用在Cygwin中返回false:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms683167(v=vs.85).aspx

3 个答案:

答案 0 :(得分:1)

程序正在使用函数GetConsoleMode检查它是否在控制台模式下运行。不幸的是,这在Cygwin下的bash中返回false。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms683167(v=vs.85).aspx

答案 1 :(得分:0)

一定是路径问题。检查:

  • cmd.exe和Cygwin上的环境变量PATH的内容
  • 尝试使用相对或绝对路径
  • 使用Sysinternals' Process Monitor“窥探”MyExe.exe程序正在执行的操作。它应该在尝试打开文件时显示错误等内容。
  • 你也可以在'cygpath'命令的联机帮助页中找到有用的东西

答案 2 :(得分:-1)

Cygwin在X11 xterm中运行许多DOS程序(特别是使用Borland编译器编译)但在非X cygwin控制台窗口下没有同样的问题。例如/UTES/zip.exe什么都不显示(甚至不显示错误消息)。

解决方法: 我确实发现用/UTES/zip.exe重定向输出> /tmp/some.file获取所需的文本输出,但是/UTES/zip.exe |更多挂起(就像任何其他管道命令...排序,lpr等)我可以使用CMD但CMD / c program.exe对我不起作用并且从CMD shell以交互方式运行程序,而不是cygwin可执行文件或CMD-builtins也只输出命令名称。对我来说,最好的解决方案就是不幸地为这些程序避免使用X.