Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
终端中的Cygwin输出与Windows控制台不同_Cygwin - Fatal编程技术网

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

终端中的Cygwin输出与Windows控制台不同,cygwin,Cygwin,我有一个程序,它在Windows控制台conhost.exe中运行时显示一些输出,而在Cygwin下使用完全相同的参数运行时根本没有输出 是什么导致了这样的问题 我还测试了$C:/Windows/zip.exe-help,它们都返回了相同的输出。也许这不是标准输出,但却是错误输出 命令行是: ./Bin/Release/MyExe.exe regtest ./QCE/RegressionTests/AutoTests/AutoGenerated/T1/RegTest_PV_Loan.tst 该

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


这一定是路径问题。检查:

cmd.exe和Cygwin上的环境变量路径的内容 尝试使用相对路径或绝对路径 用于监视MyExe.exe程序正在执行的操作。它应该在尝试打开文件时显示错误之类的内容。 您也可以在“cygpath”命令的手册页中找到一些有用的内容
程序正在使用函数GetConsoleMode检查它是否在控制台模式下运行。不幸的是,这在Cygwin下的bash中返回false


我对Cygwin运行许多DOS程序也有同样的问题,特别是在X11 xterm中使用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内置文件除外)交互运行程序时,除了命令名外,也不会输出任何内容。不幸的是,对我来说,最好的解决方案是避免这些程序使用X。

这是什么样的程序?同时在这里发布您正在使用的完整命令行更好地发布输出-并解释差异。一个是reg测试的结果,另一个是根本没有输出。我可以把这些reg测试的结果放在这里,但我不确定它在这种情况下是否非常相关。我认为它必须做一些事情,比如检查它是否在真正的控制台中运行,而不是在实际情况下输出任何东西。为什么需要从cygwin运行它?我本身不需要,但我对bash而不是DOS命令非常熟悉。我需要做一些脚本来运行这些东西,并根据输出更改运行顺序。请尝试CMD/C命令,而不是命令或创建.bat文件。我会做的,只是遇到一些其他紧急问题。这并不能真正回答问题。如果您有不同的问题,可以单击以提问。一旦你有足够的时间,你也可以把更多的注意力吸引到这个问题上。我的变通方法可能会很有用,即使它不是一个真正的解决方案。。。如果您无法更改任何其他内容,则使用somecommand>somefile会有所帮助;但令人惊讶的是,somecommand | more并没有起到作用。真正的解决办法当然是修改不起作用的程序;路径没有问题,CMD/C技巧也没有帮助。只是要明确一点:我的建议是使用非X11 cygwin。如果没有其他可用选项,将输出重定向到文件的解决方法对于查看输出仍然很有用。关键是让软件以慢速但标准的标准方式写入,而不是快速的屏幕内存写入,尽管它考虑得很合理,但我猜它是在向控制台写入。在这些程序中,我尝试将输出重定向到一个文件,但没有通过管道传输到另一个可执行文件,这迫使GetConsoleMode无法正确回答这个问题。