std::system 或 exec 是更好的做法吗?

mjl*_*007 6 c++

我有一个程序调用我制作的 shell 脚本工具,该工具通过目录压缩文件并获取校验和值并调用其他一些工具来上传文件。手术大约需要 3 到 4 分钟。

我这样称呼脚本:

int result = system("/bin/sh /path/to/my/script");
Run Code Online (Sandbox Code Playgroud)

通过使用exec()函数系列,我也得到了相同的结果:

int child = fork();
if(child == 0) {
    execl( "/bin/sh", "sh", "/path/to/my/script", (char*)0 );
}
Run Code Online (Sandbox Code Playgroud)

我知道有exec你可以输出重定向到父程序,以便它可以读取的命令行工具的输出,但除此之外,什么时候应该使用system,而不是exec

R S*_*ahu 5

暂时忽略使用system是可移植的,而exec函数族的使用是不可移植的......

当您将exec函数系列的使用与其他 POSIX 函数(例如pipedup、 )结合使用时wait,您可以更好地控制如何在父进程和子进程之间传递数据。

当您不需要任何这些控件时,即您只想执行一个命令,那么system最好使用IMO。