linux基础---进程的概念《四》

本文深入讲解Linux系统中进程管理的核心概念,包括进程状态转换、内存管理单元(MMU)、环境变量、进程间通信(IPC)及孤儿进程与僵尸进程的处理。通过详细解析fork()、exec()函数族和wait/waitpid()函数,帮助读者理解进程创建、执行和终止的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux系统课程:

一.进程相关的概念:
在这里插入图片描述

  • 进程状态转换
    在这里插入图片描述
    **MMU:**内存管理单元
  • 虚拟内存到物理内存的映射
  • 修改内存访问级别
  • 用户空间映射到物理内存是独立的。

环境变量
env :查看所有的环境变量
查看某一个环境变量:
在这里插入图片描述
获取环境变量:
在这里插入图片描述
进程fork()
在这里插入图片描述
返回值:

  • 失败-1
  • 父进程返回子进程id
  • 子进程返回0
    在这里插入图片描述
    pid_t getpid(void); 获得pid,进程id,或得当前进程
    pid_t getppid(void); 获得当前进程父进程的id

查看进程命令:
ps aux
ps ajx --追踪进程之间的血缘关系
在这里插入图片描述
进程共享:
在这里插入图片描述
exec函数族
执行其他程序
在这里插入图片描述
执行程序的时候,使用PATH环境变量,执行程序可以不用加路径
int execlp(const char *file, const char arg, …/ (char *) NULL */);
在这里插入图片描述
执行execlp()函数后,替换了代码段,就不会再执行之前的函数内容
在这里插入图片描述

孤儿进程与僵尸进程:
孤儿进程:父亲挂了,子进程被init进程领养
僵尸进程:子进程挂了,父进程没有回收子进程的资源(PCB)
man ps 查看进程的状态
在这里插入图片描述
在这里插入图片描述
回收僵尸进程:杀死父进程,init领养,负责回收。

wait与waitpid函数
在这里插入图片描述
按照创建的顺序退出进程:
在这里插入图片描述
回收子进程,知道子进程的死亡原因
作用:

  • 阻塞等待
  • 回收子进程资源
  • 查看死亡原因

pid_t wait(int *status);

status传出的参数
返回值:

  • 成功返回终止的子进程ID

  • 失败返回-1
    判断返回值的状态:
    在这里插入图片描述
    正常死亡 WIFEXITED

    • 如果 WIFEXITED为真,使用WEXITSTATUS得到退出的状态 非正常死亡

    WIFSIGNALED

    • 如果WIFSIGNALED为真,使用得到 WTERMSIG得到信号

父子进程不共享全局变量:
在这里插入图片描述
在这里插入图片描述
waitpid()函数
在这里插入图片描述
在这里插入图片描述

回收多个子进程:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值