使用系统函数调用来执行shell命令

使用系统函数调用来执行shell命令

我正在尝试使用系统调用创建一些目录和文件。前任)

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命令将不起作用,因为您正在调用外部进程,更改其工作目录,然后外部命令立即终止,因此该命令没有任何效果。

除了其他命令之外工作,你不应该那样做。您调用的所有命令(mkdircdtouch)都可以在一两个 C 函数调用(实际上是系统调用)中完成,因此将它们作为外部命令运行确实没有必要带来性能和安全损失。

system("mkdir foo") → mkdir("foo", 0777)
system("touch foo") → close(open("foo", O_WRONLY|O_CREAT, 0777))
chdir("foo")

(当然,错误检查留给读者作为练习。)

相关内容