进程等待

进程等待:父进程等待子进程的退出,获取退出子进程的返回值,释放退出子进程的资源为了避免产生僵尸进程
操作:
pid_t wait(int* status);
status:一个整形空间的地址,用于获取退出子进程返回值
返回值:成功返回退出子进程的pid,失败返回-1;
等待任意一个子进程的退出,如果当前没有子进程退出则一直阻塞等待
阻塞:为了完成一个功能,发起调用,若当前不具备完成条件,则一直等待
非阻塞:为了完成一个功能,发起一个调用,若当前具备完成条件,则立即返回
pid_t waitpid(pid_t childpid,int * status,int options)
可以等待任意一个子进程退出,也可以只等待指定的子进程;
可以阻塞等待子进程退出,也可以非阻塞等待子进程退出
childpid:-1表示等待任意子进程,大于0表示等待指定的子进程,
status:用于获取子进程的返回值
options:0-默认阻塞等待;WNOHANG-设置非阻塞等待
返回值:错误返回-1;没有子进程退出返回0;有子进程

一个程序在运行中,如果产生了某种错误(比如内存访问错误),
系统就会给进程发送一个指定的信号表示进程出现了某个错误事件,收到这个信号后,进程(崩溃)退出。
异常信号退出值为0,表示进程正常退出,非0表示异常退出
代码转换:1.判断进程是否正常退出2.获取退出的实际返回值
status&0x7f==0; (status>>8 &0xff
WIFEXIETED(status) WEXIT
程序替换:替换一个进程正在调度运行的程序,
在一个进程中执行程序替换接口,就能实现改变当前调用进程运行的程序
程序替换,只是替换了运行的程序,而pcb中也只是车用心初始化了一些信息 (虚拟地址空间,页表…….)
Exec函数族:一个系统调用接口+五个库函数
./main -a -l -p
第一个参数是新的程序文件路径名,第二参数是程序运行参数,第三个参数是环境变量
exec函数有p时,程序文件若是命令程序可以不用带路径
带p的函数,常用于执行替换命令程序时使用 默认去path 环境变量指定的路径下找程序
Exec函数有e时,表示有我们自己设定环境变量,否则默认使用原有环境变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中的进程等待(Process Waiting)是指一个进程在执行时需要等待某些条件满足后才能继续执行的情况。 在Linux中,进程等待通常有以下几种情况: 1. I/O等待:当一个进程需要进行输入输出操作时,比如读写文件或者网络通信,由于这些操作是相对慢速的,进程需要等待数据的读取或写入完成才能继续执行。 2. 锁等待:多个进程访问临界资源时,为了避免竞态条件,需要使用锁来实现同步。当一个进程试图获取已经被其他进程占用的锁时,它会被阻塞,并等待锁被释放。 3. 睡眠等待:当一个进程调用了sleep()或wait()等系统调用后,它会主动释放CPU资源,并进入睡眠状态,等待指定的时间或者某个事件发生后才会被唤醒。 4. 信号等待:当一个进程正在等待某个信号的到来时,它会进入阻塞状态,直到该信号被发送给该进程进程才会被唤醒并继续执行。 针对进程等待的情况,Linux提供了一些机制来管理这些等待进程,比如使用信号量、条件变量、管道等方式来实现进程间的同步与通信。此外,Linux还提供了一些工具和命令来查看进程等待的状态,比如top命令可以查看每个进程等待时间,ps命令可以查看进程的状态等。 总之,Linux中的进程等待是一个重要的概念,合理管理进程等待可以提高系统的性能和资源利用率。进程等待是多任务操作系统中的常见现象,对于了解和掌握Linux进程管理至重要。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值