我想在 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
.