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

上海网站建设公司网站建设做收益的网站多少钱

上海网站建设公司网站建设,做收益的网站多少钱,搜索推广平台有哪些,泰国做网站网站要判几年文章目录 进程程序替换程序替换函数execl()函数调用另外一个可执行程序 execlp()函数ecexv()函数execle()函数 替换函数总结 进程程序替换 什么是进程程序替换?为什么要有程序替换? 顾名思义,进程程序替换就是把该进程中的程序替换掉&#x…

文章目录

  • 进程程序替换
  • 程序替换函数
    • execl()函数
      • 调用另外一个可执行程序
    • execlp()函数
    • ecexv()函数
    • execle()函数
  • 替换函数总结

进程程序替换

什么是进程程序替换?为什么要有程序替换?
顾名思义,进程程序替换就是把该进程中的程序替换掉,那么为什么要把该进程中的程序替换掉呢?因为我们在创建子进程时,想让子进程去做其他的事情,如果直接把子进程要做的事情写在该程序中,会让程序变得很臃肿,而且我们希望子进程可以做很多的事情。

程序替换函数

子进程进行程序替换,一般要使用exec系列的函数。
接下来我们对这个系列的函数使用进行阐述并总结
在这里插入图片描述
通过下面代码我们来依次了解这些函数的使用:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

execl()函数

先看使用:
在这里插入图片描述
执行结果:
在这里插入图片描述
对各参数进行说明:
在这里插入图片描述
参数path:要我们说明要调用程序的路径
参数arg:可以看到这里是一个可变参数,第一个参数写命令,后面的写对应的选项,最后要以NULL结尾。通俗来讲就是我们在命令行中怎么写的这里的参数arg就要怎么写,最后再加上NULL即可。比如ls -a -l 这里就写 ls -a -l NULL.

调用另外一个可执行程序

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在可执行程序mytest1中调用可执行程序mytest2

execlp()函数

使用:
在这里插入图片描述
结果
在这里插入图片描述
对参数进行说明:
在这里插入图片描述
参数file:函数execlp中含有p,说明继承的环境变量属性没有被替换,因此无需写路径,指明要执行的程序在哪个文件即可,会自动的在对应的路径下找到这个文件,例如ls在/usr/bin/下的ls文件中,因此当要执行程序ls时,这里的参数就是对应的文件ls
可变参数arg:因为函数名中含有l,意为参数格式为列表,也是按在bash命令下写的这就证明写,最后加上NULL即可。

ecexv()函数

使用1:
注意类型是char* const 而不是const char*
在这里插入图片描述

在这里插入图片描述
结果1:
在这里插入图片描述
使用2:

在这里插入图片描述
在这里插入图片描述

结果2:
在这里插入图片描述

参数:

参数path:因为函数名不带p,没有继承环境变量,因此要传确切的文件路径(相对路径或绝对路径总之能让当前文件找到即可)
参数argv:注意这里的参数类型是char* const而不是const char*,这是个指针指向不可变的指针数组,相比于可变参数列表传递,这个函数是直接将一个参数数组传了过去。也就是把可变参数列表放到了这个数组里。对于自己写的程序要传的path路径是生成的可执行程序的路径,而不是源文件的路径
在这里插入图片描述
在这里插入图片描述

execle()函数

putenv()函数用于添加一个环境变量给调用进程的上下文
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
可以看到当我们不传环境变量时,子进程也可以拿到我们在当前进程创建的环境变量。那么当前进程的父进程可以拿到我们在当前进程的环境变量吗?
在这里插入图片描述
可以看到在当前进程导入的变量与它的父进程无关,它只会传递给子进程

那么我要是就想自己传环境变量应该怎么传呢?
那就要使用exec系列中带e的函数了
使用:
在这里插入图片描述
在这里插入图片描述
结果
在这里插入图片描述
参数
在这里插入图片描述
参数path:表明子进程要替换成的可执行程序的路径
参数arg:可变参数列表,传递命令行参数
参数envp:传递环境变量表,可以用自己写的环境变量的指针数组传递,也可以用全局变量environ传递
传递全局变量environ
使用:
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述
对这两种方式进行总结:传递environ会把在父进程中继承中的环境变量也都传过去,若传递的是在当前进程写的自定义环境变量指针数组,那么在替换函数中接收到的环境变量会把在父进程中继承中的环境变量覆盖掉

替换函数总结

1、函数名中带l,就是要我们以参数列表的形式传递命令行参数
2、函数名中带v,就是要我们以指针数组的形式把参数传过去
3、函数中带p,说明它会继承父进程的环境变量,因此可只需指明要去替换的可执行程序的文件名即可,函数会自己去找到该文件
4、函数名中带e的,需要我们自己自定义设置环境变量,可以自己添加环境变量指针数组传过去,但这会覆盖继承的环境变量,如果想保留继承的环境变量,那么在当前进程putenv()对应的环境变量添加到当前进程的上下文(不会添加到父进程),再用全局变量environ传递过去即可

对字母所指的单词进行解释:
l:list列表
v:vector数组
p:path路径
e:environment环境

http://www.yayakq.cn/news/237272/

相关文章:

  • 运城网站制作网站开发人员的职责
  • php网站后台管理模板建筑设计资质查询平台
  • 备案网站建设方案wordpress 外企模板
  • 网站设计实施方案多语言网站实现
  • 萧山城区建设有限公司网站虚拟机做网站安全吗
  • 厦门网站免费制作泰安软件开发公司哪家好
  • 建国际网站需要多少钱系统那个网站免费
  • 青岛百度网站排名优化南京市网站seo整站优化
  • 如何重建网站程序员怎么做自己的网站
  • 山东官方网站栖霞市观里镇少城镇建设规划广州化妆品网站建设公司
  • 万网服务器网站建设网站博客程序
  • 电子商务网站建设与管理考卷做网站 阿里云
  • 做系统进化树的网站做游戏评论注册国外网站
  • 江都区城乡建设局网站马局沧州公司做网站
  • 网站建设和推广的话术网站首页文案模板
  • 教育培训网站开发wordpress time
  • 厦门市建设局查询保障摇号网站首页营口建设信息网站
  • 沈阳市建设工程质量检测中心网站软件推广平台有哪些
  • 网站建设需要哪些项目天津大型网站设计公司
  • 做网站必须要注册公司么后台管理页面模板
  • wordpress收费主题seo实战指导
  • 在线教育自助网站建设平台电影网站模板下载
  • 济南哪里有做网站的公司专业网站的定义
  • 网站建设的主要情况说明书做简历用什么网站
  • 网站容易出现的问题做自己的游戏网站
  • 如何建设一个购物网站泰安网签备案查询
  • 网站建设费怎么做账金融网站建设
  • 怎样用flash做网站如何使用网站模板建设网站
  • 南京做企业号微网站营销中国能源建设集团网站
  • windows 网站开发环境360收录入口