#include <stdio.h>
#include <unistd.h> // fork()
#include <sys/types.h> // pid_t
#include <stdlib.h> // exit()
#include <sys/wait.h> // wait()
int main() {
pid_t pid1, pid2;
// 创建第一个子进程
pid1 = fork();
if (pid1 < 0) {
perror("fork 失败");
exit(1);
}
if (pid1 == 0) {
// 第一个子进程
printf("1\n");
exit(0);
}
// 等待第一个子进程结束
wait(NULL);
// 创建第二个子进程
pid2 = fork();
if (pid2 < 0) {
perror("fork 失败");
exit(1);
}
if (pid2 == 0) {
// 第二个子进程
printf("2\n");
exit(0);
}
// 等待第二个子进程结束
wait(NULL);
printf("父进程执行完毕\n");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4gICAgLy8gZm9yaygpCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gLy8gcGlkX3QKI2luY2x1ZGUgPHN0ZGxpYi5oPiAgICAvLyBleGl0KCkKI2luY2x1ZGUgPHN5cy93YWl0Lmg+ICAvLyB3YWl0KCkKCmludCBtYWluKCkgewogICAgcGlkX3QgcGlkMSwgcGlkMjsKCiAgICAvLyDliJvlu7rnrKzkuIDkuKrlrZDov5vnqIsKICAgIHBpZDEgPSBmb3JrKCk7CiAgICBpZiAocGlkMSA8IDApIHsKICAgICAgICBwZXJyb3IoImZvcmsg5aSx6LSlIik7CiAgICAgICAgZXhpdCgxKTsKICAgIH0KCiAgICBpZiAocGlkMSA9PSAwKSB7CiAgICAgICAgLy8g56ys5LiA5Liq5a2Q6L+b56iLCiAgICAgICAgcHJpbnRmKCIxXG4iKTsKICAgICAgICBleGl0KDApOwogICAgfQoKICAgIC8vIOetieW+heesrOS4gOS4quWtkOi/m+eoi+e7k+adnwogICAgd2FpdChOVUxMKTsKCiAgICAvLyDliJvlu7rnrKzkuozkuKrlrZDov5vnqIsKICAgIHBpZDIgPSBmb3JrKCk7CiAgICBpZiAocGlkMiA8IDApIHsKICAgICAgICBwZXJyb3IoImZvcmsg5aSx6LSlIik7CiAgICAgICAgZXhpdCgxKTsKICAgIH0KCiAgICBpZiAocGlkMiA9PSAwKSB7CiAgICAgICAgLy8g56ys5LqM5Liq5a2Q6L+b56iLCiAgICAgICAgcHJpbnRmKCIyXG4iKTsKICAgICAgICBleGl0KDApOwogICAgfQoKICAgIC8vIOetieW+heesrOS6jOS4quWtkOi/m+eoi+e7k+adnwogICAgd2FpdChOVUxMKTsKCiAgICBwcmludGYoIueItui/m+eoi+aJp+ihjOWujOavlVxuIik7CgogICAgcmV0dXJuIDA7IAp9