如何使用 exec() 系列系统调用实现 cp 和 rm shell 命令?我搜索了很多,但没有找到任何有用的网站/链接,有人可以帮忙吗???
问问题
1775 次
1 回答
3
以下是示例。
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
变体时显式提供类型转换,因为 varargs 函数不会自动将类型转换为指针。
于 2013-07-25T19:05:22.170 回答