linux 进程控制说明

本文深入探讨了Linux内核中的关键进程概念,包括进程ID、init进程、vfork与fork的区别,以及僵死进程的生命周期。同时解释了进程间文件描述符共享、文件锁继承、wait和waitpid函数的使用,最后介绍了waitid、wait3和wait4函数的特性。

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

内核进程

进程id   名字   说明
 0     swap   用于交换    系统进程
 1     init   用于启动系统  非系统进程      程序文件sbin/init 读配置文件/etc/init.d
 2     pagedaemon  页守护进程  系统进程

进程相关函数的重要说明

1) fork之后,父子进程没有规定谁先执行,依赖于系统调度   
             父子进程相同的文件描述符共享一个文件表项
             父进程的文件锁不会被子进程继承
   vfork只会部分赋值父进程的地址空间,然后父进程会等待子进程至少exec其他程序后才开始执行,
   *********子进程在调用exec或exit之前在父进程的地址空间运行*****************

2)如果子进程的父进程已经结束,那么它们的父进程都会变成init进程,被init领养
      **实现原理是,在父进程终止的时候去遍历进程表,然后找到它的所有子进程并修改
      init在子进程结束的时候会调用wait取得子进程的状态,所以子进程结束后不会变成僵死进程.
3) 僵死进程:
      子进程结束后,会保留进程id,结束状态等值,并不会马上退出,需要等待父进程使用
      wait来取得值后再结束,如果父进程一直不来取,那么子进程就以僵死进程的状态一直存在.
      ps命令将僵死状态的进程标识为Z
4) 子进程只要结束就向父进程发送SIGCHLD信号,如果父进程不捕获默认是忽略
5) wait 和waitpid
   wait调用:  如果有子进程存在,且都在运行,那么父进程阻塞
              1)当有一个子进程退出的时候,那么wait调用马上返回
              2)收到SIGCHLD信号,那么wait调用马上返回
   waitpid调用:
              1)可以根据参数设置是否阻塞父进程
              2)可以指定某个子进程进行阻塞
              3)可以控制子进程
6) waitid,wait3,wait4
   waitid类似于waitpid
   wait3和wait4分别是指有3个参数和4个参数的wait,多的参数表示需要内核返回子进程的资源报告






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值