使用vfork、exec系列函数、wait/waited实现system函数的功能

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>int _system(const char* cmd)
{const char* space = NULL;char* argv[256] = {};   //定义一个存放命令行的指针数组,每一个小命令存一下int argc = 0;while(space = strchr(cmd,' '))    //sscanf不接收空格,这里先寻找命令行输入的空格{char* arg = malloc(space-cmd)+1;sscanf(cmd,"%s",arg);argv[argc++] = arg;      //将ls -l -a分成3个存入argvcmd = space+1;}argv[argc++] = (char*)cmd; //-a后面没有空格,存在最后pid_t pid = vfork();if(-1 == pid){perror("vfork");return -1;}if(0 == pid){if(-1 == execvp(argv[0],(char* const*)argv)){perror("execlp");return -1;}}else{int status = 0;int ret = waitpid(pid,&status,0);printf("%d %d",ret,pid);if(ret != pid){perror("waitpid");return -1;}for(int i=0; i<argc-1; i++){free(argv[i]);}}return 0;
}int main()
{_system("ls -l -a");
}

使用vfork、exec系列函数、wait/waited实现system函数的功能相关推荐

  1. linux应用编程和网络编程-3.4.linux进程全解- 父子关系 exec system函数

    程序的开始和结束 编译链接时的引导代码(构建执行环境)调用main函数 ①编译链接时的链接器:将编译器中引导代码给连接进去和应用程序一起构成最终的可执行程序. ②运行时的加载器:将这个程序加载到内存中 ...

  2. linux下system函数的深入理解

    这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为 ...

  3. C语言 system函数

    Windows函数 windows操作系统下system () 函数详解(主要是在C语言中的应用) 函数名: system 功 能: 发出一个DOS命令 用 法: int system(char *c ...

  4. C语言 system函数

    Windows函数 windows操作系统下system () 函数详解(主要是在C语言中的应用) 函数名: system 功 能: 发出一个DOS命令 用 法: int system(char *c ...

  5. system函数深度理解

    转载地址:https://www.cnblogs.com/tdyizhen1314/p/4902560.html 注:从其它地方转的非常好的一篇文章,值得深究! 这几天调程序(嵌入式linux),发现 ...

  6. linux下system函数详解

    一.system函数的简单介绍 头文件 #include <stdlib.h>函数定义int system(const char * string); 函数说明 system()会调用fo ...

  7. 如何隐藏system函数的窗口

    如何隐藏system函数的窗口 修改浏览权限 | 删除 由于一直在写控制台的程序,对于MFC并不是很熟.这次写osg<-->ive格式转换器这个小工具的时候,涉及到使用setlocale函 ...

  8. linux系统编程之进程(七):system()函数使用

    一,system()理解 功能:system()函数调用"/bin/sh -c command"执行特定的命令,阻塞当前进程直到command命令执行完毕 原型: int syst ...

  9. linux系统编程之进程(七):system()函数使用【转】

    本文转载自:http://www.cnblogs.com/mickole/p/3187974.html 一,system()理解 功能:system()函数调用"/bin/sh -c com ...

最新文章

  1. 《大道至简》读后感(伪代码)
  2. 重磅丨李飞飞亲自带队,谷歌AI中国中心今天正式成立
  3. 北京瑜舍酒店成京城“精品”酒店代表(图)_新浪尚品_新浪网
  4. Hadoop集群高可用及zookeeper+kafka组件搭建
  5. 【已解决】R read.table()报错:incomplete final line found by readTableHeader
  6. mysql语句执行顺序
  7. react学习(73)--子组件this
  8. poj 1904 King's Quest 强连通分量+匹配
  9. 1_数据分析—数据载入、导出和探索
  10. 9月26日发布?一加7T系列被“扒光”:硬核到没朋友
  11. 推荐算法(二)--算法总结
  12. mac high sierra开机按option怎么只有一个磁盘_Mac降级重装必备 | MacOS 制作启动U盘及安装方法!...
  13. java定时器quartz
  14. 车票预订系统 搭建服务器,火车票网上订票系统的设计与实现.doc
  15. 无忧微店自动发货软件
  16. 过期系统激活 win7
  17. [杂记]LeTeX模板——ppt
  18. 20年嵌入式工程师经验分享:从0开发一款嵌入式产品-道合顺大数据Infinigo
  19. 计算机显示器图片怎么铺满全屏,win10电脑显示器屏幕不能铺满怎么办_win10电脑显示不能铺满屏幕处理方法-win7之家...
  20. C语言计算出结构体所占空间大小

热门文章

  1. 微软认知服务的使用 – 漫画翻译
  2. 攻防世界misc——misc1
  3. 《Real-Time Rendering 4th Edition》全文翻译 - 第15章 非真实感渲染(下)15.3 ~ 15.5
  4. Android利用zxing生成二维码
  5. 阿里云服务器完全卸载AliYun监控教程
  6. 微信小程序网络请求异常怎么办_微信小程序网络超时的处理
  7. 论文笔记-高速无人机网络MAC协议
  8. jvm系列 (四) ---强、软、弱、虚引用
  9. 基于OpenCV做“三维重建”(1)--找到并绘制棋盘
  10. 2017 Real-valued (Medical) Time Series Generation with Recurrent Conditional GANs