当前位置: 首页 > news >正文

进程第五章:进程替换

 一、铺垫

1.进程替换,替换的是代码段和数据段,其他的并没有太大的改变;

2.进程替换没有创建新的进程;

3.程序替换,子进程与父进程有高度的独立性,但是父进程仍可以通过接口获取子进程的信息;但是新程序必须有返回给父进程的返回值;

4.程序替换成功之后,exec*的后续代码不会被执行,替换失败之后,才会继续执行后续代码;exec*替换成功没有返回值,失败才会有返回值;

 二、函数细讲

1.execl函数

int execl(const char *path, const char *arg, ...);

 第一个参数:路径名,比如:"/usr/bin/ls",此路径名是为了确定该文件具体在哪里,是否存在,等问题;路径名中必须要包含要执行的文件名;用绝对路径或相对路径

第二个参数:要执行的文件名;要怎样执行;

第三个参数:可变参数列表,最后必须以NULL结尾

举例:        

execl("/usr/bin/ls","ls","-a","-l",NULL);

execl("/usr/bin/ls","ls"NULL);        //什么参数都不加

execl("./ls","ls"NULL);         //当前路径下的程序;(为了演示才这样写)

 2.execlp函数

p—path:execlp自己会在默认的path环境中查找;

int execlp(const char *file, const char *arg, ...);

execlp("ls","ls","-a","-l",NULL);        //举例

 3.execv函数

v—vector

int execv(const char *path, char *const argv[]);

不用可变参数,定义了指针数组,把参数传进指针数组里来用

举例:char *const myargv[]={"ls","-a",NULL};

execv("/usr/bin/ls", myargv[]);

 4.execvp函数

int execvp(const char *file, char *const argv[]);

在默认的path环境中寻找文件去执行;

5.execle函数

int execle(const char *path, const char *arg, ...,char *const envp[]);

//最后一个参数,变成环境变量的参数;

char *const myenv[]={"myenv=1111111"} //把环境变量传进去

//采用的策略是覆盖,而不是增加,父进程的环境变量被覆盖;

 通过环境变量把变量传给子进程,来供子进程使用;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 计算机网络: 第一章 概述_2:计算机网络的性能指标
  • python_使用tkinter建立一个页面的模板
  • 自动化测试面试题(含答案)
  • vue3 响应式 API:shallowRef()和shallowReactive()
  • orcad画封装,如何隐藏引脚编号,线宽
  • 【MySQL】初识MySQL—MySQL是啥,以及如何简单操作???
  • [环境配置]Pycharm手动安装汉化插件
  • c/c++ 指针数组
  • 05:【江科大stm32】:定时器输出比较功能(PWM)
  • Facebook 小店:不出单?没流量?如何解决?
  • Facebook的AI进化:如何用智能技术提升内容推荐
  • ubuntu 安装 jdk
  • “99公益日”绿葆携手一镇一业,捐赠价值8万元的取袋机等物资
  • Unity中使用四元数限制旋转
  • 算法笔记|Day40动态规划XIII
  • chrome扩展demo1-小时钟
  • Fabric架构演变之路
  • JDK9: 集成 Jshell 和 Maven 项目.
  • leetcode386. Lexicographical Numbers
  • LintCode 31. partitionArray 数组划分
  • PHP 小技巧
  • PHP的Ev教程三(Periodic watcher)
  • PV统计优化设计
  • Python打包系统简单入门
  • React组件设计模式(一)
  • 从PHP迁移至Golang - 基础篇
  • 从setTimeout-setInterval看JS线程
  • 大型网站性能监测、分析与优化常见问题QA
  • 二维平面内的碰撞检测【一】
  • 关于 Cirru Editor 存储格式
  • 近期前端发展计划
  • 那些年我们用过的显示性能指标
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 我的面试准备过程--容器(更新中)
  • 我感觉这是史上最牛的防sql注入方法类
  • 正则表达式
  • ​什么是bug?bug的源头在哪里?
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (1)虚拟机的安装与使用,linux系统安装
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (C语言)fgets与fputs函数详解
  • (七)Knockout 创建自定义绑定
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 8.0 发布到 IIS
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .Net MVC4 上传大文件,并保存表单
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET处理HTTP请求