73-Linux进程替换(exec系列)

本文详细介绍了Linux中exec系列的6个函数,包括execl、execlp、execle、execv、execvp和execve,这些函数用于替换进程的实体。重点讨论了它们的使用方式和参数区别,并通过示例演示了如何使用。此外,文章还阐述了bash作为命令解释器的角色,以及在执行命令时如何通过fork和exec进行进程替换。
摘要由CSDN通过智能技术生成

一:知识点

1.exec系列的方法,有6个(execl,execlp,execle,execv,execvp,execve)前5个是库函数,最后一个是系统调用, 这6个本质上没有什么区别,前5个的实现最后都是通过调用最后一个方法实现的

2.替换的时候PCB是不换的,只是把进程的实体替换掉了,然后PCB中的name改成了替换后的进程的名字,但是PCB的pid号是不变的

3.新进程的产生就是先复制再替换(fork+exec),进程就是这么得来的,没有直接创造新进程的方法

4.最好用的命令解释器:bash,命令解释器不只是有bash,还有很多(如:sh,tcsh),其中bash是最好用的命令解释器

5.命令就是我们通常说的可执行程序

6.bash先把自己复制一下,然后再替换成其他的可执行程序,所以就表现为新替换的程序的父进程是bash

7.6个替换的函数本质上没有什么区别,只是传入的参数不同,最后都会调用execve函数

8.每个函数其实都传了环境变量,只不过前两个省略了,在调用最后一个函数的时候,会把当前进程的环境传给新替换的程序

9.-f会显示父进程的id

10.内核外头围绕的就是命令解释器,通过命令解释器和内核沟通,用户在命令解释器之外

在这里插入图片描述

11.bash怎么帮我们执行命令呢?先把自己复制一下(fork),然后把复制出来的子进程替换成我们要执行的程序(exec)

二:替换的6个方法实现:

主函数的第一个参数:当前程序的名字,第二个参数:,第三个参数:

如果替换成功,就不会执行18行的printf(“exec error\n”);因为如果替换成功了,就从替换的哪个程序开始执行了,其实每个函数都需要传环境变量,只不过前面两个省略了,在调用最后一个函数的时候,会把当前进程的环境传给新替换的程序

  1 #include <stdio.h
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值