#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
pid_t pid1, pid2;
// 创建第一个子进程
pid1 = fork();
if (pid1 < 0) {
fprintf(stderr, "Fork Failed\n");
return 1;
} else if (pid1 == 0) {
// 子进程1
printf("b");
fflush(stdout); // 立即刷新输出缓冲区
return 0; // 子进程1结束
}
// 父进程继续执行,创建第二个子进程
pid2 = fork();
if (pid2 < 0) {
fprintf(stderr, "Fork Failed\n");
return 1;
} else if (pid2 == 0) {
// 子进程2
printf("c");
fflush(stdout); // 立即刷新输出缓冲区
return 0; // 子进程2结束
}
// 父进程
// 等待两个子进程都结束
wait(NULL);
wait(NULL);
printf("a");
fflush(stdout);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3dhaXQuaD4KCmludCBtYWluKCkgewogICAgcGlkX3QgcGlkMSwgcGlkMjsKCiAgICAvLyDliJvlu7rnrKzkuIDkuKrlrZDov5vnqIsKICAgIHBpZDEgPSBmb3JrKCk7CgogICAgaWYgKHBpZDEgPCAwKSB7CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJGb3JrIEZhaWxlZFxuIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9IGVsc2UgaWYgKHBpZDEgPT0gMCkgewogICAgICAgIC8vIOWtkOi/m+eoizEKICAgICAgICBwcmludGYoImIiKTsKICAgICAgICBmZmx1c2goc3Rkb3V0KTsgLy8g56uL5Y2z5Yi35paw6L6T5Ye657yT5Yay5Yy6CiAgICAgICAgcmV0dXJuIDA7IC8vIOWtkOi/m+eoizHnu5PmnZ8KICAgIH0KCiAgICAvLyDniLbov5vnqIvnu6fnu63miafooYzvvIzliJvlu7rnrKzkuozkuKrlrZDov5vnqIsKICAgIHBpZDIgPSBmb3JrKCk7CgogICAgaWYgKHBpZDIgPCAwKSB7CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJGb3JrIEZhaWxlZFxuIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9IGVsc2UgaWYgKHBpZDIgPT0gMCkgewogICAgICAgIC8vIOWtkOi/m+eoizIKICAgICAgICBwcmludGYoImMiKTsKICAgICAgICBmZmx1c2goc3Rkb3V0KTsgLy8g56uL5Y2z5Yi35paw6L6T5Ye657yT5Yay5Yy6CiAgICAgICAgcmV0dXJuIDA7IC8vIOWtkOi/m+eoizLnu5PmnZ8KICAgIH0KCiAgICAvLyDniLbov5vnqIsKICAgIC8vIOetieW+heS4pOS4quWtkOi/m+eoi+mDvee7k+adnwogICAgd2FpdChOVUxMKTsKICAgIHdhaXQoTlVMTCk7CgogICAgcHJpbnRmKCJhIik7CiAgICBmZmx1c2goc3Rkb3V0KTsKCiAgICByZXR1cm4gMDsKfQ==