-
wait()
系统调用.当调用进程的任意子进程终止时,会返回,由此可判断子进程是否终止.wait
系统调用存在以下几个缺点:
-
wait
系统调用无法等待某个特定子进程,只能按顺序等待下一个子进程的终止+ 而且wait
系统调用始终保持阻塞状态,即如果没有子进程终止的话,会一直阻塞下去; -
wait
只能发现已经终止的子进程,对于那些因为SIGSTOP,SIGTTIN
而停止的进程或者已停止但收到SIGCONT
信号而恢复的子进程无能为力.NOTE:终止和停止不一样> 如果实际使用情况包含以上的某个缺点,也可以使用waitpid
系统会调用
- 信号量和排它文件锁:如果被监控进程持续持有某一信号量或文件锁,那么如果能够获取到信号量或文件锁,则证明被监控进程已经终止
- 利用管道和FIFO之类的IPC通道:让被监控进程在自身生命周期内持有管道或通道的写操作文件描述符,让监控进程持有管道或通道的读操作文件描述符,当管道或通道写入端关闭的时候,就证明被监控进程已经终止
-
/proc/PID
:如果进程存在,则必然会有/proc/${PID}
目录
网友评论