从 Windows 命令行在 mintty 中运行 C 程序

从 Windows 命令行在 mintty 中运行 C 程序

我想在 mintty 中运行一个 C 程序并将stderr输出流转移到文件 debug.txt。这可以通过以下方式实现:

./zombie_jump 2>debug.txt

但是,我在从 Windows 命令行启动它时遇到了问题。

mintty -s 70,55 ./zombie_jump 2>debug.txt

表现得就像2>debug.txt命令被遗忘了一样(运行程序但不转移错误流),并且

mintty -s 70,55 "./zombie_jump 2>debug.txt"

行为就像我发送了“./zombie_jump 2>debug.txt”一样,产生了错误Failed to run ./zombie_jump 2>debug.txt: No such file or directory

我应该使用什么命令?

编辑:

mintty -s 70,55 './zombie_jump 2>debug.txt'

返回Failed to run ./zombie_jump : No such file or directory并创建一个名为 的文件debug.txt'

答案1

这里的错误很容易理解:mintty没有将程序输出转发到(大概是)cmd设置输出重定向的地方。相反,它会在自己的 GUI 窗口中显示输出。毕竟,这就是终端仿真器的设计目的。:)

输出重定向是 shell 的一个功能。如果你只是运行mintty my_command,那么你根本就没有使用 shell。相反,mintty直接启动my_command

如果您引用"my_command 2>out.err",则表示您mintty正在寻找具有该(完整)名称的命令。这相当于"my_command 2>out.err"在常规 Linux shell 中键入。无论哪种方式都不起作用。

既然我们已经确定这是一个 shell 功能,那么显然我们需要一个 shell。一个常见的选择是 Bash。Bash 可以在启动时传递一个命令字符串来执行,如下所示:

bash -c "my_command 2>out.err"

这意味着我们可以像这样使用它mintty

mintty /bin/bash -c "my_command 2>out.err"

在我的计算机上,以这种方式启动的 Cygwin Bash shell 继承了我在 中的工作目录cmd

相关内容