首頁 >後端開發 >Golang >為什麼我的Go程式的`exec.Command`在終端機中失敗,但在控制台中成功?

為什麼我的Go程式的`exec.Command`在終端機中失敗,但在控制台中成功?

Patricia Arquette
Patricia Arquette原創
2024-12-22 01:52:10225瀏覽

Why Does My Go Program's `exec.Command` Fail in the Terminal But Succeed in the Console?

使用參數呼叫指令:控制台成功,終端失敗

在這種情況下,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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn