day2: 作业8 写法二

This commit is contained in:
flykhan 2023-08-16 10:34:26 +08:00
parent b8c6eeebaa
commit 63a0e73009
1 changed files with 39 additions and 0 deletions

39
day2/homework/h8_2.c Normal file
View File

@ -0,0 +1,39 @@
// 请分析如下程序如何实现创建2个子进程 第一个子进程输出ABC, 第二子进程输出 DEF。
// 做法二
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, char *argv[])
{
// 创建2个子进程
int i;
for (i = 0; i < 2; i++)
{
pid_t pid = fork();
if (pid == 0)
{
if (i == 0)
printf("%d ABC\n", getpid());
else
printf("%d DEF\n", getpid());
_exit(0);
}
}
// 等待所有子进程结束
while (1)
{
// 等待任意子进程结束并获取已终止子进程的进程ID
int pid = waitpid(-1, NULL, WUNTRACED); // -1 表示等待任意子进程
printf("子进程 %d over\n", pid);
if (pid == -1)
break;
}
printf("主进程 %d over\n", getpid());
return 0;
}