2013-07-25 12 views
1

如何使用exec()系列系統調用來實現cp和rm shell命令?我搜索了很多,但沒有找到任何有用的網站/鏈接,有人可以幫忙嗎?我如何使用exec()系列系統調用來實現shell命令cp和rm?

+0

[使用exec()系列運行「cd」命令](http://stackoverflow.com/questions/9859903/using-the-exec-family-to-run-the-cd-命令) –

+0

@OliCharlesworth不是,因爲'cd'是一個內置的shell。 – Barmar

+0

@Barmar:是的,你說得對,'cp'和'rm'不是內置的。 –

回答

4

下面是一些例子。

exec功能與l在他們的名字作爲自己的參數參數列表。 p後綴表示應該使用$PATH找到命令,因此您可以提供命令名稱。

execlp("cp", "cp", "sourcefile", "destfile", (char *)0); 

v變體採取在單個數組參數參數(「V」代表vector)。在這種情況下,我沒有使用e後綴,所以我給了程序的完整路徑。

char *args[] = {"rm", "file1", "file2", 0); 
execv("/bin/rm", args); 

在這兩種情況下,第一個參數也是程序的名稱,因爲這將在新的進程變得argv[0]。並且參數的結尾用空指針表示。您應該在使用l變體時明確提供類型轉換,因爲可變參數函數不會自動將類型轉換爲指針。

+0

這是否回答了您的問題?如果是這樣,您應該通過接受答案來確認:點擊綠色的複選標記。 – Barmar