2013-07-25 17 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