#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("饿");
fflush(stdout); // 立即刷新输出缓冲区
return 0; // 子进程1结束
}
// 父进程继续执行,创建第二个子进程
pid2 = fork();
if (pid2 < 0) {
fprintf(stderr, "Fork Failed\n");
return 1;
} else if (pid2 == 0) {
// 子进程2
printf("吃饭");
fflush(stdout); // 立即刷新输出缓冲区
return 0; // 子进程2结束
}
// 父进程
// 等待两个子进程都结束
wait(NULL);
wait(NULL);
printf("饿就吃饭");
fflush(stdout);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3dhaXQuaD4KCmludCBtYWluKCkgewogICAgcGlkX3QgcGlkMSwgcGlkMjsKCiAgICAvLyDliJvlu7rnrKzkuIDkuKrlrZDov5vnqIsKICAgIHBpZDEgPSBmb3JrKCk7CgogICAgaWYgKHBpZDEgPCAwKSB7CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJGb3JrIEZhaWxlZFxuIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9IGVsc2UgaWYgKHBpZDEgPT0gMCkgewogICAgICAgIC8vIOWtkOi/m+eoizEKICAgICAgICBwcmludGYoIumlvyIpOwogICAgICAgIGZmbHVzaChzdGRvdXQpOyAvLyDnq4vljbPliLfmlrDovpPlh7rnvJPlhrLljLoKICAgICAgICByZXR1cm4gMDsgLy8g5a2Q6L+b56iLMee7k+adnwogICAgfQoKICAgIC8vIOeItui/m+eoi+e7p+e7reaJp+ihjO+8jOWIm+W7uuesrOS6jOS4quWtkOi/m+eoiwogICAgcGlkMiA9IGZvcmsoKTsKCiAgICBpZiAocGlkMiA8IDApIHsKICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZvcmsgRmFpbGVkXG4iKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0gZWxzZSBpZiAocGlkMiA9PSAwKSB7CiAgICAgICAgLy8g5a2Q6L+b56iLMgogICAgICAgIHByaW50Zigi5ZCD6aWtIik7CiAgICAgICAgZmZsdXNoKHN0ZG91dCk7IC8vIOeri+WNs+WIt+aWsOi+k+WHuue8k+WGsuWMugogICAgICAgIHJldHVybiAwOyAvLyDlrZDov5vnqIsy57uT5p2fCiAgICB9CgogICAgLy8g54i26L+b56iLCiAgICAvLyDnrYnlvoXkuKTkuKrlrZDov5vnqIvpg73nu5PmnZ8KICAgIHdhaXQoTlVMTCk7CiAgICB3YWl0KE5VTEwpOwoKICAgIHByaW50Zigi6aW/5bCx5ZCD6aWtIik7CiAgICBmZmx1c2goc3Rkb3V0KTsKCiAgICByZXR1cm4gMDsKfQ==