首頁  >  文章  >  後端開發  >  如何使用 C system() 執行參數包含空格的外部應用程式?

如何使用 C system() 執行參數包含空格的外部應用程式?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-02 13:45:30668瀏覽

How to Execute External Applications with Arguments Containing Spaces Using C   system()?

C system() 當呼叫因多個包含空格的參數而失敗

在C 中透過system() 呼叫外部應用程式時,確保正確處理下列參數至關重要:包含空格。如果可執行路徑和參數都包含空格,則可能會發生錯誤。

底層錯誤機制

system() 基本上使用 cmd /C 執行指定的命令。處理命令列時,cmd 遵循有關引號字元的某些規則。預設情況下,它會刪除前導和尾隨引號,將剩餘的字串視為可執行檔名稱。

解決錯誤

要解決此問題,必須將命令包含在一組附加的雙引號:

<code class="cpp">system("\"\""CMD\"" \""ARG1\"" \""ARG2\"\"");</code>

這種額外的引用級別可確保cmd 正確解釋每個參數,無論是否存在空格。

替代方法

另一種方法涉及使用批次檔來執行具有所需參數的命令。可以使用以下內容建立批次檔:

cd PATH_TO_DIR
EXECUTABLE_NAME ARG1 ARG2

透過以此批次檔名作為參數呼叫 system(),即使參數包含空格,該指令也會如預期執行。

其他注意事項

為了確保與不同環境和 shell 實現的兼容性,建議在使用 system() 時包含 /S 開關。此開關強制 cmd 嚴格依據 cmd 文件中所述的情況 2 解析命令列。

範例:

<code class="cpp">system("cmd /S /C \"\""CMD\"" \""ARG1\"" \""ARG2\"\"");</code>

以上是如何使用 C system() 執行參數包含空格的外部應用程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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