我想使用system()
執行命令。該命令需要一個文件名作爲參數。事情是這樣的:使用C++中的system()在linux下執行命令的轉義序列
void f(string filename){
strnig cmd = "path/to/my/command " + filename;
system(cmd.c_str());
...
}
我的問題是什麼逃脫,我可以使用,因此,在文件名收到的字符串將被視爲該文件並沒有更多的只是名稱序列。例如,如果filename = "aname;rm *"
,我不希望我的命令在"aname"
上執行,然後"rm *"
被視爲新命令並刪除當前目錄中的所有內容。
此外,我希望我的文件名能夠包含特殊字符,如:'
,"
或空格,而不會影響命令的執行。
如何在C++中執行此操作?
謝謝!
你可能會考慮使用'execv()'而不是'system()'。使用起來比較複雜(但是複雜性可以隱藏在一個函數中),並且你不會得到通配符擴展,但是你也不會得到你不需要的shell行爲。如果你不想要或不需要通配符,我認爲'execv()'會是一條路。 –