1. wait和waitpid函数说明
wait函数是用于使父进程阻塞,直到一个子进程终止或者该进程接到了一个指定的信号为止。如果该父进程没有子进程或者他的子进程已经终止,则wait就会立即返回。
waitpid函数的作用和wait一样,但它并不一定要等待第一个终止的子进程,它还有若干项,如可提供一个非阻塞版本的wait功能。实际上wait函数只是waitpid函数的一个特例。
2. wait和waitpid函数格式说明
3. waitpid函数实例
wait函数只是waitpid函数的一个特例,所以这里只举使用waitpid函数的实例。
/*waitpid.c*/
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
pid_t result1,result2;
result1=fork();(创建新进程)
if(result1<0)
printf("fork fail\n");
else if(result1==0)
{
printf("sleep 3s in child\n ");
sleep(3); (子进程暂停3s)
exit(0);
}
else
{
/*不断地在测试子进程是否退出*/
do
{
result2=waitpid(result1,NULL,WNOHANG);
if(result2==0)(如果子进程没有退出就返回值为0)
{
printf("The child process has not exited\n");
sleep(1);
}
}while(result2==0);
if(result1==result2)
printf("The child process has exited\n");
}
}
编译运行结果为
[root@localhost waitpid]./waitpid
sleep 3s in child
The child process has not exited
The child process has not exited
The child process has not exited
The child process has exited
通过运行结果可知道父进程在没有捕获到子进程的退出信号,就会不断地循环,直到子进程退出为止,子进程不退出,waitpid返回值为0。
本文转载于唯C教育,【Linux基础】wait和waitpid函数
http://www.weicedu.com/forum.php?mod=viewthread&tid=114&fromuid=4 (出处: http://www.weicedu.com/) |
相关文章
- 【Linux】waitpid函数 及其 非阻塞等待和阻塞等待
- linux驱动:(22)中断节点和中断函数
- Verilog基础:$display系统函数和C语言中的库函数printf的区别-Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.
- 原来今天是感恩节-Linux基础继续&MySQL和PHP
- 【linux基础】ubuntu如何查看linux的内核版本和系统版本
- 13 - matlab m_map地学绘图工具基础函数 - 介绍创建管理颜色映射的函数m_colmap和轮廓图绘制颜色条的函数m_contfbar-1. 关于m_colmap
- Linux多进程和多线程(三)进程间通讯-信号处理方式和自定义处理函数
- linux下bus、devices和platform的基础模型 【转】
- Linux下shell脚本中信号捕获和函数练习脚本之ping一个网段
- Linux命令基础15-ps和kill命令