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

新网个人网站备案wordpress cpu突然

新网个人网站备案,wordpress cpu突然,站长基地gif网站素材,企拓客软件多少钱目录 进程程序替换 替换原理 替换函数接口 execl接口 execlp接口 execv接口 execve接口 接口总结 自主命令行解释器 进程程序替换 fork() 之后,⽗⼦各⾃执⾏⽗进程代码的⼀部分如果⼦进程就想执⾏⼀个全新的程序呢?进程的程序 替换来完成这个功能&#xf…

目录

进程程序替换

替换原理

替换函数接口

execl接口

execlp接口

execv接口

execve接口

接口总结

自主命令行解释器


进程程序替换

fork() 之后,⽗⼦各⾃执⾏⽗进程代码的⼀部分如果⼦进程就想执⾏⼀个全新的程序呢?进程的程序 替换来完成这个功能!

程序替换是通过特定的接⼝,加载磁盘上的⼀个全新的程序(代码和数据),加载到调⽤进程的地址空间中!

我们先看看效果:

现象:

子进程被替换后,其后续代码不会运行(从打印和退出码可以看出来),它的pid不会变,可以肯定子进程并没有创建新进程来执行ls命令。所以叫进程替换。

替换原理

⽤fork创建⼦进程后执⾏的是和⽗进程相同的程序(但有可能执⾏不同的代码分⽀),⼦进程往往要调⽤⼀ 种exec函数以执⾏另⼀个程序。当进程调⽤⼀种exec函数时,该进程的⽤⼾空间代码和数据完全被新程序替换,从新程序的启动例程开始执⾏。调⽤exec并不创建新进程,所以调⽤exec前后该进程的id并未改变。

理解:

我们知道子进程创建出来(内核数据结构和代码和数据拷贝父进程的),将代码和数据加载到内存,它会有自己的pcb,一个虚拟内存,一张页表,它的页表会和它的代码和数据与虚拟内存建立映射关系。

进行程序替换,只会替换子进程的代码和数据(也就是说从前子进程的代码和数据都不复存在了,这也就是为什么替换之后后续代码不会运行了),然后将之前的代码和数据在页表之间的映射关系解除,重新构建与新的代码和数据的映射关系。

1.也就是说,最终,程序替换只会替换掉它的代码和数据以及页表部分的映射关系发生变化,它的pcb,虚拟内存不变。

2.在程序替换过程中,并没有创建新进程,只是把当前进程的代码和数据用新的程序的代码和数据覆盖式的进行替换。

替换函数接口

现在来介绍!

注意:exec*系列的接口,不需要做返回值判断,只要返回,就是失败。如果调⽤出错则返回-1。

execl接口

execlp接口

理解:

execv接口

理解:

execve接口

理解:

更多应用:

我们可以将子进程替换成自己的程序,于是我们写了个C++代码(other.cc)

然后在我们的proc.c程序中将子进程调用替换成这个C++程序:

结果:

我们能将结果命令行参数和环境变量打印出来的原因是main函数中可以传命令行参数和环境变量,其实execve就是将传进去的命令行参数和环境变量表传给需要替换的程序main函数。

我们也可以传自己制作的环境变量表:

结果:

我们可以看到在other程序只使用了我们自己创造的环境变量表,而之前的环境变量表没有了!

execve函数传进去的环境变量表,要求被替换的程序使用全新的环境变量表。原进程的环境变量会被完全替换。

如果我们不需要使用全新的,只需要新增几个呢?

我们可以使用putgenv函数:

结果:

理解:

这次不仅有我们添加的环境变量还有之前的环境变量,子进程添加了一个环境变量,此时子进程不仅能用新的还能用旧的,然后替换了,是将子进程所有的(新的和旧的)环境变量都传给了替换程序。execve函数本就是将原进程的环境变量会完全替换。

接口总结

这些函数原型看起来很容易混,但只要掌握了规律就很好记。

  • l(list) : 表⽰参数采⽤列表
  • v(vector) : 参数⽤数组
  • p(path):有p⾃动搜索环境变量PATH
  • e(env):表⽰⾃⼰维护环境变量

注意:

事实上,只有execve是真正的系统调⽤,其它五个函数最终都调⽤execve,所以execve在man⼿册第2节, 其它函数在man⼿册第3节。

这些函数之间的关系如下图所⽰:

为什么子进程程序替换,不会影响父进程?

因为进程的独立性,虽然子进程代码和数据会发生改变,而父进程不会,会发生写时拷贝。

只有execve是系统级函数,其他都是语言级的对它的封装(都会调用它),意味着哪怕其他函数不传环境变量,也会使用默认的!

自主命令行解释器

好了,我们下期见!


文章转载自:

http://OaUJ5cym.rghkg.cn
http://yBU0zmG5.rghkg.cn
http://NnUQDtVD.rghkg.cn
http://QVtM9qpl.rghkg.cn
http://ItVRfXdF.rghkg.cn
http://oFZepdkg.rghkg.cn
http://kxyo0YE3.rghkg.cn
http://0O7qtRio.rghkg.cn
http://9Y2xU3AP.rghkg.cn
http://swzYwlaS.rghkg.cn
http://NktuVNz6.rghkg.cn
http://bhDn9DJY.rghkg.cn
http://DjxVImZf.rghkg.cn
http://cNlhOzEK.rghkg.cn
http://i7KFuVJy.rghkg.cn
http://51sLXmdO.rghkg.cn
http://V4g8Bi6G.rghkg.cn
http://2B0x6V25.rghkg.cn
http://qXv7iduX.rghkg.cn
http://Wh4yyDV9.rghkg.cn
http://y59uMUyZ.rghkg.cn
http://1Du4bJpn.rghkg.cn
http://7awQwUVC.rghkg.cn
http://0zN4GuQo.rghkg.cn
http://CyXwed3g.rghkg.cn
http://9KHIbf7M.rghkg.cn
http://D5SVn9QX.rghkg.cn
http://4rbPsSJh.rghkg.cn
http://FR2qCGY9.rghkg.cn
http://GEf4cXKu.rghkg.cn
http://www.dtcms.com/wzjs/746023.html

相关文章:

  • 安阳网站优化python开发做网站
  • 做封面的网站在哪里长沙网络推广公司详细地址
  • 男直接做的视频网站三年抗疫国库空虚殆尽
  • 山东网站建设和游戏开发的公司中国做室内设计的网站
  • 万网公司注册网站同和网站建设
  • 建设网站都需投入哪些资源网站建设及维护涉及哪些内容
  • 苏州建设网站哪家好福田网站制作报价
  • 免费手机做网站怎么增加网站的反链
  • 做帖子的网站有哪些wordpress本站主题
  • 北京做网站的开发公司网站开发是做什么?
  • 怎么学习网站建设wordpress设为首页
  • 搬瓦工putty做网站dw不会写代码能建立网站吗
  • 网站托管好吗郴州网站制作公司有哪些
  • 网站编程教学福州seo顾问
  • 网站开发工程师的经验wordpress淘宝客建站
  • 服装 网站模板 wordpress网站备案注销流程
  • 上传网站数据库吗做网站需要的技术
  • 如何设计网站做网站用什么软件医院双语网站建设的意义
  • 高端的网站推广网站建设 语言
  • 莘县建设局网站百青藤广告联盟官网
  • 手机网站建设经典教程wordpress熊掌号展示
  • 成交型网站建设wordpress增加产品
  • 多语言网站怎么做个别网站网速慢怎么做
  • 中高端社交网站建设服务商如何不花钱建设网站
  • 安徽网站设计网站建设包括哪些部分
  • 做网站和游戏是如何赚钱北京注册工作室代理公司
  • 旅游网站制作 价格wordpress 登陆 插件
  • 学做网站论坛vip账号破解室内装饰设计公司
  • 免费做店招的网站什么是企业网站营销
  • 自己做网站流程用网站做成软件