使用參數呼叫指令:控制台成功,終端失敗
在這種情況下,Go 程式成功執行帶有兩個參數的top 指令( -n 10 和-l 2),顯示10 個進程的詳細資料。但是,新增附加參數 (-o cpu) 會導致錯誤:「無效參數 -o」。
問題
嘗試執行時發生錯誤帶有完整參數清單的終端的 top 指令 (-o cpu -n 10 -l 2)。但是,從控制台執行時,相同的命令可以按預期工作。
根本原因
問題源自於作業系統解析參數的方式。通常,從控制台執行命令時,每個參數都以空格分隔。然而,在 Go 程式中,參數會作為單一字串傳遞。這使得作業系統需要解釋這些參數,在這種情況下它會錯誤地解釋。
解決方案
要解決此問題,參數必須作為單獨的參數傳遞字串到 exec.Command 函數。以下程式碼示範了執行此操作的正確方法:
透過將每個參數作為單獨的字串傳遞,作業系統可以正確解釋命令並按預期執行它。這解決了錯誤並允許程式使用附加參數 (-o cpu) 成功顯示 10 個進程的詳細資訊。
以上是為什麼我的Go程式的`exec.Command`在終端機中失敗,但在控制台中成功?的詳細內容。更多資訊請關注PHP中文網其他相關文章!