system函数原型

头文件: #include<stdlib.h>

参数:char的指针

返回值:system()函数的返回值如下: 成功,则返回进程的状态值; 当sh不能执行时,返回127; 失败返回-1;

  #include <stdlib.h>int system(const char *command);
//system函数源码
int system(const char * cmdstring)
{pid_t pid;int status;if(cmdstring == NULL){return (1);}if((pid = fork())<0){status = -1;}else if(pid == 0){execl("/bin/sh", "sh", "-c", cmdstring, (char *)0);-exit(127); //子进程正常执行则不会执行此语句}else{while(waitpid(pid, &status, 0) < 0){if(errno != EINTER){status = -1;break;}}}return status;
}

源码讲解:当pid=0时进入子进程,else之后的意思父进程等待子进程退出,进入子进程调用exec,执行cmd,所以说system函数是exec族函数封装

根据之前所学exec配合fork的代码可以进行修改

//q3.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/wait.h>int main()
{pid_t pid;int data = 10;while(1){printf("please inputa data\n");scanf("%d",&data);if(data == 1){pid = fork();if(pid >0){wait(NULL);}if(pid == 0){system("./changedata config.txt");exit(1);}}}return 0;
}

实验结果

linux_system函数相关推荐

  1. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

    数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...

  2. Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译

    Mysql函数group_concat.find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查 ...

  3. C++ 笔记(34)— C++ exit 函数

    当遇到 main 函数中的 return 语句时,C++ 程序将停止执行.但其他函数结束时,程序并不会停止.程序的控制将返回到函数调用之后的位置.然而,有时候会出现一些非常少见的情况,使得程序有必要在 ...

  4. C++ 笔记(30)— 友元函数与友元类

    我们知道类的私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行.这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书写的麻烦. ...

  5. 浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )

    1. foreach 函数 foreach 函数定义如下: $(foreach <var>,<list>,<text>) 函数的功能是:把参数 <list&g ...

  6. 浅显易懂 Makefile 入门 (06)— 文件名操作函数(dir、notdir、suffix、basename、addsuffix、addperfix、join、wildcard)

    编写 Makefile 的时候,很多情况下需要对文件名进行操作.例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等. 注意:下面的每个函数的参数字符串都会被当作或是一个系列的文件名来看待. 1 ...

  7. Go 学习笔记(65)— Go 中函数参数是传值还是传引用

    Go 语言中,函数参数传递采用是值传递的方式.所谓"值传递",就是将实际参数在内存中的表示逐位拷贝到形式参数中.对于像整型.数组.结构体这类类型,它们的内存表示就是它们自身的数据内 ...

  8. Go 学习笔记(61)— Go 高阶函数、函数作为一等公民(函数作为输入参数、返回值、变量)的写法

    函数在 Go 语言中属于"一等公民(First-Class Citizen)"拥有"一等公民"待遇的语法元素可以如下使用 可以存储在变量中: 可以作为参数传递给 ...

  9. C++ 笔记(26)— 主函数 main(int argc, char *argv[]) 参数说明

    带形参的 main 函数,如 int main( int argc, char* argv[], char **env ) 是 UNIX .Linux 以及 Mac OS 操作系统中 C/C++ 的 ...

最新文章

  1. Python open 读和写
  2. hadoop写文件 java_写文件 - Hadoop 学习手册_教程_Java开发社区
  3. android dialog
  4. 数据库三大范式(1NF,2NF,3NF)及ER图
  5. oracle语句求保有率,Oracle之保有量计算(当前记录等于前几条记录之和)
  6. python类对象点处折行_史上最全的Python面向对象知识点疏理(对象是类的实例)
  7. 第三次Sprint-最后冲刺
  8. 【codevs1039】01年noip TG--数的划分满分dp+愚蠢深搜+pas的奇怪做法
  9. Kubernates和Docker
  10. (数据挖掘-入门-9)聚类
  11. feign调用接口返回html,Spring Cloud Feign接口返回流
  12. 深入JavaScript之获取cookie以及删除cookie
  13. 2019最新某私塾在线高级java软件架构师实战培训教程
  14. 侠客行java_MUDOS 侠客行100 MUDLIB 的一些摸索...
  15. 项目案例之决策树在保险行业的应用
  16. python七巧板拼图代码_为什么代码都是用英文来写的,将来会有用中文写代码的那天吗?...
  17. ubuntu 中安装 meld 的方式
  18. IT外企那点儿事(12):也说跳槽
  19. MySql的一些常见笔试题(1)
  20. 《Focal Loss GHM Loss Dice Los》论文笔记

热门文章

  1. 想要学习视频剪辑?可以从什么剪辑软件开始?
  2. sklearn Gaussian Processes(高斯过程)
  3. 初始化Weex项目遇到的问题记录
  4. Winform使用DSO Framer控件嵌入office 异常总结及解决方法
  5. htcvr设备计算机配置,HTC VIVE需要怎样的电脑配置
  6. Go-directed and habitual learning
  7. Dijkstra算法求解单源最短路径问题
  8. CSDN写文章Markdown个人笔记
  9. Unity Dotween常用方法详解
  10. RBD存储模式为RWX时kubernetes多次挂载该PV不报错