diff --git a/day2/homework/h8_2.c b/day2/homework/h8_2.c new file mode 100644 index 0000000..f694acc --- /dev/null +++ b/day2/homework/h8_2.c @@ -0,0 +1,39 @@ +// 请分析如下程序,如何实现创建2个子进程, 第一个子进程输出ABC, 第二子进程输出 DEF。 +// 做法二 +#include +#include +#include +#include + +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; +}