⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wait.c

📁 LINUX C编程实战这本书附带光盘的原代码
💻 C
字号:
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

int main()
{
	pid_t	pid;
	char  	*msg;
	int   	k;
	int   	exit_code;

	printf("Study how to get exit code\n");
	pid = fork();
	switch(pid) {
		case 0:
			msg = "Child process is running";
			k = 5;
			exit_code = 37;
			break;
		case -1:
			perror("Process creation failed\n");
			exit(1);
		default:
			exit_code = 0;
			break;
	}

	/* 父子进程都会执行以下这段代码子进程中pid值为0,父进程pid值为子进程的ID  */
	if(pid != 0) {  // 父进程等待子进程结束
		int 	stat_val;
		pid_t 	child_pid;
		
		child_pid = wait(&stat_val);
		
		printf("Child procee has exited, pid = %d\n",child_pid);
		if(WIFEXITED(stat_val))
         		printf("Child exited with code %d\n",WEXITSTATUS(stat_val));
       		else
        		printf("Child exited abnormally\n");
	}
	else {   // 子进程暂停5秒,在这个过程中可以运行命令ps aux查看父进程状态
		while(k-->0) {
			puts(msg);
			sleep(1);
		}
	}

	exit(exit_code);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -