wait()函数

来源:互联网 发布:c语言if语句格式 编辑:程序博客网 时间:2024/06/10 01:44
函数原型:
pid_t wait(int *status);
头文件:
#include<sys/types.h>
#include<sys/wait.h>
返回值:
成功: 终止的子进程的ID
失败:-1;失败原因存于errno 中
函数功能:
wait() 会暂时停止进程的执行,直到有信号或子进程结束,如果在调用wait()时子进程已经结束,则wait() 会立即返回子进程结束的状态值,子进程的结束的状态值由参数status 返回,儿子进程的PID也一块返回
参数说明:
statsus :用来保存被手机进程退出时的一些状态,它是一个指向int 类型的指针,如果我们对这个子进程如何死掉不关心,我们可以设置这个参数为NULL。
范例:
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main()
{
pid_t pid;
int status ,i;
//创建子进程
pid =fork();
if(pid==0)
{
printf("this is child Process .pid =%d \n",getpid())
exit(0);
}
if(pid>0)
{
sleep(1);
printf("this is parent process ,wait fot child ....\n");
pid = wait(&status);
printf(" WIFEXITED(status)=%d\n ",WIFEXITED(status));
printf("child pid =%d \n exit status =%d \n",pid,WEXITSTATUS(status));
}
}

注释:
WIFEXITED(status)这个宏用来指出子进程是否为正常退出的,如果是,它会返回一个非零值。
WEXITSTATUS(status):取得子进程exit()返回的结束代码,一般会先用WIFEXITED 来判断是否正常结束才能使用此宏。例如:WEXITSTATUS(status) 打印结果为0;
原创粉丝点击