linux——wait

文章目录

  • 前言
  • 一、wait函数
  • 二、例程
    • 1.wait()
    • 2.子进程退出状态
    • 3.异常退出


前言

本文记录的是wait的用法


一、wait函数

在这里插入图片描述
在这里插入图片描述

二、例程

1.wait()

代码如下(示例):

#include 
#include 
#include 
#include int main(int argc, char const *argv[])
{int i = 0, status;pid_t pid = fork();if(pid) {printf("我是父进程! 我的ID是:%d\n", getpid() );wait(&status);printf("子进程已经退出!\n");} else{printf("我是子进程! 我的ID是:%d\n", getpid() );sleep(3);}return 0;
}

结果如图所示:
在这里插入图片描述
子进程等待三秒后结束,然后父进程打印信息

2.子进程退出状态

代码如下(示例):

#include 
#include 
#include 
#include 
#include 
int main(int argc, char const *argv[])
{int i = 0, status;pid_t pid = fork();if(pid) {printf("我是父进程! 我的ID是:%d\n", getpid() );wait(&status);printf("子进程已经退出!\n");if(WIFEXITED(status)) {printf("子进程正常退出,退出值为:%d\n" , WEXITSTATUS(status));} else if( WIFSIGNALED(status)  ) {printf("子进异常退出,被信号杀死:%d\n" , WTERMSIG(status));printf("退出值为:%d\n" , WEXITSTATUS(status));}} else{printf("我是子进程! 我的ID是:%d\n", getpid() );sleep(10);exit(35);}return 0;
}

结果如图所示:
在这里插入图片描述

3.异常退出

代码如下(示例):

人为结束子进程

#include 
#include 
#include 
#include 
#include 
int main(int argc, char const *argv[])
{int i = 0, status;pid_t pid = fork();if(pid) {printf("我是父进程! 我的ID是:%d\n", getpid() );wait(&status);printf("子进程已经退出!\n");if(WIFEXITED(status)) {printf("子进程正常退出,退出值为:%d\n" , WEXITSTATUS(status));} else if( WIFSIGNALED(status)  ) {printf("子进异常退出,被信号杀死:%d\n" , WTERMSIG(status));printf("退出值为:%d\n" , WEXITSTATUS(status));}} else{printf("我是子进程! 我的ID是:%d\n", getpid() );sleep(10);exit(35);}return 0;
}

结果如图所示:
在这里插入图片描述



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部