我正在尝试使用系统调用创建一些目录和文件。前任)
system("mkdir directory3");
我在开始时遇到困难。这是我到目前为止所拥有的:
#include <stdio.h>
int main(int argc, const char * argv[])
{
system(“mkdir dir1”);
system(“mkdir dir2”);
system(“mkdir dir3);
system(touch file1”);
system(“touch file2”);
system(“cd dir1”);
system(“mkdir dir4”);
system(“cd dir4”);
system(“touch file4”);
system(“cd”);
}
这是正确的格式吗?
答案1
我假设您在发布之前测试了代码(或者可能没有,因为它包含缺少的引号,这将是语法错误)并发现除了命令之外的所有内容cd
基本上都有效。
这些cd
命令将不起作用,因为您正在调用外部进程,更改其工作目录,然后外部命令立即终止,因此该命令没有任何效果。
除了其他命令之外做工作,你不应该那样做。您调用的所有命令(mkdir
、cd
和touch
)都可以在一两个 C 函数调用(实际上是系统调用)中完成,因此将它们作为外部命令运行确实没有必要带来性能和安全损失。
system("mkdir foo") → mkdir("foo", 0777)
system("touch foo") → close(open("foo", O_WRONLY|O_CREAT, 0777))
chdir("foo")
(当然,错误检查留给读者作为练习。)