簡體   English   中英

如何在C中執行execvp ls * .txt

[英]How to execvp ls *.txt in C

我有問題執行* .txt通配符,並且在C中讀取此線程 - exec()任何命令 - 表明由於“全局”問題很難。 有什么簡單的方法可以解決這個問題?

這是我正在嘗試做的事情:

char * array[] = {"ls", "*.txt", (char *) NULL };
execvp("ls", array);

你可以使用系統命令:

system("ls *.txt");

讓外殼為您做這些事情。

為了回答這個問題,您必須了解在終端(模擬器)中鍵入ls *.txt時發生了什么。 鍵入ls *.txt命令時, shell對其進行解釋。 然后, shell執行目錄列表,並根據*.txt模式將目錄中的文件名匹配。 只有完成上述所有操作后, shell才會將所有文件名作為參數進行准備,並生成一個新進程,將這些文件名作為argv數組傳遞給execvp調用。

為了自己組裝類似的東西,請查看以下問題:

另外,您可以按照@ manu-fatto的建議使用system()函數。 但是該函數會做一些不同的事情-它實際上將運行將評估ls *.txt語句的shell程序,該程序隨后將執行與我上面描述的步驟類似的步驟。 它的效率可能較低,並且可能會引入安全漏洞(有關更多詳細信息,請參見手冊頁,“ 注意”部分說明了安全風險,建議在某些情況下不要使用上述功能)。

希望能幫助到你。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM