day2: 作业8 写法二
This commit is contained in:
parent
b8c6eeebaa
commit
63a0e73009
|
@ -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;
|
||||||
|
}
|
Loading…
Reference in New Issue