Linux 进程控制补充 —— 进程程序替换

目录

什么是进程程序替换

为什么有进程程序替换

注意

程序替换原理(由OS完成,我们需要进行系统调用)

替换原理

如何进行进程程序替换

函数小结

记忆方法


C语言总结在这常见八大排序在这

作者和朋友建立的社区:非科班转码社区-CSDN社区云💖💛💙

期待hxd的支持哈🎉 🎉 🎉

最后是打鸡血环节:你只管努力,剩下的交给天意🚀 🚀 🚀

最近作者和好久建立了一个公众号

公众号介绍:

专注于自学编程领域。由USTC、WHU、SDU等高校学生、ACM竞赛选手、CSDN万粉博主、双非上岸BAT学长原创。分享业内资讯、硬核原创资源、职业规划等,和大家一起努力、成长。(二维码在文章底部哈!)

什么是进程程序替换

我们现在知道,fork出来的子进程是执行父进程的代码片段,但是如果我们想要创建出来的子进程,执行其他的程序呢?这就需要进程的程序替换了。

为什么有进程程序替换

我们一般在Linux编程的时候,往往只需要子进程干两种事情

1. 让子进程执行父进程的代码片段(服务器代码)

2. 让子进程执行磁盘中一个权限的程序(shell,想让客户端执行对应的程序,通过我们得到进程,执行其他人写的进程代码等(c/c++/python/java/php/shell...))

注意

进程程序替换的时候是没有创建新进程的

程序替换原理(由OS完成,我们需要进行系统调用)

1. 将磁盘中的程序,加载入内存结构

2. 重新建立页表映射,谁执行程序替换,就重新建立谁的映射(子进程)

效果:让我们的父进程和子进程彻底分离,并让子进程执行一个全新的程序

替换原理

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

如何进行进程程序替换

调用的时候注意以NULL结尾

 

注意只有下面那个才是系统接口,其他(上面6个)都是基于应用场景的封装

 

函数小结

这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回。
如果调用出错则返回-1
所以exec函数只有出错的返回值而没有成功的返回值。

l(list):表示参数采用列表

v(vector):参数用数组

p(path):有p表示自动搜索环境变量PATH

e(env):表示自己维护环境变量

注意是覆盖式(覆盖PATH)的。所以如果要添加环境变量就需要之间在外面

进行 export envname

记忆方法

最后的最后,创作不易,希望读者三连支持💖

赠人玫瑰,手有余香💖

  • 6
    点赞
  • 1
    收藏 更改收藏夹
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原来45

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值