在程序中执行一个shell命令将会大大使得程序便捷。当然,我们可以使用fork来创建一个新进程,然后在子进程中调用exec函数簇来完成启动一个新程序。但是为了方便起,ISO C定义了一个system函数,但是它对系统的依赖很强。而POSIX扩展了这一定义。
#include <stdlib.h>
int system(const char *command);
在Unix系统下,system函数总是可用的。system在其实现中调用了fork,exec,waitpid。因此它的返回值有三种。
当我们有一个shell需要执行的时候,建议使用system来实现,而不是自行fork,exec。system函数进行了出错处理以及各自信号处理。
一个简单的例子是,我们将当前环境变量保存到一个文件,在终端下,可以很方便的执行命令env > env.txt来保存。现在我们有了system,也可以很简答的实现这个操作。
#include<stdlib.h>
int main()
{
system("env > env.txt");
return 0;
}
编译,执行以后,成功将当前环境变量保存到env.txt中。