linux——wait

linux——wait,第1张

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是:%dn", getpid() );
		wait(&status);
		printf("子进程已经退出!n");
	} else{
		printf("我是子进程! 我的ID是:%dn", 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是:%dn", getpid() );
		wait(&status);
		printf("子进程已经退出!n");
		if(WIFEXITED(status)) {
			printf("子进程正常退出,退出值为:%dn" , WEXITSTATUS(status));
		} else if( WIFSIGNALED(status)  ) {
			printf("子进异常退出,被信号杀死:%dn" , WTERMSIG(status));
			printf("退出值为:%dn" , WEXITSTATUS(status));
		}
	} else{
		printf("我是子进程! 我的ID是:%dn", 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是:%dn", getpid() );
		wait(&status);
		printf("子进程已经退出!n");
		if(WIFEXITED(status)) {
			printf("子进程正常退出,退出值为:%dn" , WEXITSTATUS(status));
		} else if( WIFSIGNALED(status)  ) {
			printf("子进异常退出,被信号杀死:%dn" , WTERMSIG(status));
			printf("退出值为:%dn" , WEXITSTATUS(status));
		}
	} else{
		printf("我是子进程! 我的ID是:%dn", getpid() );
		sleep(10);
		exit(35);
	}

	return 0;
}

结果如图所示:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5715136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存