從 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.

相關內容