在Windows中,程序員可以這樣做:system("ls > outputFile.txt")
在C中訪問命令行的平臺無關的方法?
是否有訪問命令行的平臺獨立的方式,或至少一種方法來確定哪個平臺上正在執行的程序(因爲相同的調用功能差異很大)?
在Windows中,程序員可以這樣做:system("ls > outputFile.txt")
在C中訪問命令行的平臺無關的方法?
是否有訪問命令行的平臺獨立的方式,或至少一種方法來確定哪個平臺上正在執行的程序(因爲相同的調用功能差異很大)?
system()
本身是在stdlib.h
定義的標準C函數。然而,它解釋它的論點的方式不是標準的(例如,UNIX中的ls
,Windows/DOS中的dir
等)。如果你真的在問是否有一個獨立於平臺的方式來列出目錄中的文件,答案是(不幸)否。一些圖書館確實提供便攜式(在某種程度上)實現,最顯着提升:How can I get the list of files in a directory using C or C++?
的system(3)
功能是標準ANSI C,它已經與平臺無關。任何符合C標準的實現都可以讓你調用它來運行系統默認的命令行處理器/ shell應用程序。當然,您可以運行的實際程序因系統而異(例如,dir
只適用於Windows,而ls
通常適用於類Unix平臺)。
我明白了。如果程序試圖調用不支持的命令,它會在編譯時處理嗎? – sherrellbc
@sherrellbc不,編譯器無法知道什麼是「有效」命令。 – TypeIA
對。因此,考慮到這些系統調用是內部的(即命令提示符未打開),這些不受支持的調用是否只是簡單地通過程序繼續執行,就好像它們被正確執行一樣?這可能有點難以調試,特別是如果您嘗試讀取從未創建的'outputFile.txt'! – sherrellbc
按照定義,「命令行」功能不是平臺相關功能嗎? –
當然,如果你在* windows *上運行'system(「ls> outputFile.txt」)',結果就是'ls不被識別爲內部或外部命令......' –
@ScottMermelstein,' ls'至少在Win8上工作 - 請參閱編輯過的文章。 – sherrellbc