Linux系统课程:

一.进程相关的概念:
linux基础《四》

  • 进程状态转换
    linux基础《四》
    **MMU:**内存管理单元
  • 虚拟内存到物理内存的映射
  • 修改内存访问级别
  • 用户空间映射到物理内存是独立的。

环境变量
env :查看所有的环境变量
查看某一个环境变量:
linux基础《四》
获取环境变量:
linux基础《四》
进程fork()
linux基础《四》
返回值:

  • 失败-1
  • 父进程返回子进程id
  • 子进程返回0
    linux基础《四》
    pid_t getpid(void); 获得pid,进程id,或得当前进程
    pid_t getppid(void); 获得当前进程父进程的id

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

孤儿进程与僵尸进程:
孤儿进程:父亲挂了,子进程被init进程领养
僵尸进程:子进程挂了,父进程没有回收子进程的资源(PCB)
man ps 查看进程的状态
linux基础《四》
linux基础《四》
回收僵尸进程:杀死父进程,init领养,负责回收。

wait与waitpid函数
linux基础《四》
按照创建的顺序退出进程:
linux基础《四》
回收子进程,知道子进程的死亡原因
作用:

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

pid_t wait(int *status);

status传出的参数
返回值:

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

  • 失败返回-1
    判断返回值的状态:
    linux基础《四》
    正常死亡 WIFEXITED

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

    WIFSIGNALED

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

父子进程不共享全局变量:
linux基础《四》
linux基础《四》
waitpid()函数
linux基础《四》
linux基础《四》

回收多个子进程:
linux基础《四》

相关文章:

  • 2021-10-19
  • 2021-07-14
  • 2022-12-23
  • 2021-10-05
  • 2021-11-18
  • 2021-05-30
  • 2021-06-01
  • 2022-01-08
猜你喜欢
  • 2021-05-02
  • 2022-12-23
  • 2021-08-22
  • 2021-11-15
  • 2021-07-24
  • 2021-04-06
  • 2021-07-23
相关资源
相似解决方案