如何使用exec()系列调用实现cp和rm shell命令?我搜索了很多,但没有找到任何有用的网站/链接,有人可以帮助吗???
答案 0 :(得分:3)
以下是示例。
名称中带有exec
的{{1}}函数将参数列表作为自己的参数。 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]
变体时明确提供类型转换,因为varargs函数不会自动将类型转换为指针。