1

我有一个程序在 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

4

3 回答 3

1

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

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

于 2013-05-30T15:02:47.090 回答
0

应该是路径的问题。查看:

  • cmd.exe 和 Cygwin 上的环境变量 PATH 的内容
  • 尝试使用相对或绝对路径
  • 使用Sysinternals 的进程监视器来“监视”MyExe.exe 程序正在做什么。它应该在尝试打开文件时显示错误等内容。
  • 您也可以在“cygpath”命令的联机帮助页中找到一些有用的东西
于 2013-05-23T14:08:31.017 回答
-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。

于 2014-06-25T02:31:30.520 回答