前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >函数system

函数system

作者头像
zy010101
发布2019-08-14 10:50:34
6420
发布2019-08-14 10:50:34
举报
文章被收录于专栏:程序员程序员

在程序中执行一个shell命令将会大大使得程序便捷。当然,我们可以使用fork来创建一个新进程,然后在子进程中调用exec函数簇来完成启动一个新程序。但是为了方便起,ISO C定义了一个system函数,但是它对系统的依赖很强。而POSIX扩展了这一定义。

代码语言:javascript
复制
#include <stdlib.h>

int system(const char *command);

在Unix系统下,system函数总是可用的。system在其实现中调用了fork,exec,waitpid。因此它的返回值有三种。

  1. fork失败或者waitpid返回错误,则system返回-1。
  2. 如果exec失败,表示不能执行shell。则返回值和shell执行了exit(127)一样。
  3. 三个函数都执行成功,那么返回shell的终止状态。

当我们有一个shell需要执行的时候,建议使用system来实现,而不是自行fork,exec。system函数进行了出错处理以及各自信号处理。

一个简单的例子是,我们将当前环境变量保存到一个文件,在终端下,可以很方便的执行命令env > env.txt来保存。现在我们有了system,也可以很简答的实现这个操作。

代码语言:javascript
复制
#include<stdlib.h>
int main()
{
    system("env > env.txt");
    return 0;
}

编译,执行以后,成功将当前环境变量保存到env.txt中。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档