#include <signal.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>

void sigchld_handler(int signo) {
    // 回收所有退出的子進程
    while (waitpid(-1, NULL, WNOHANG) > 0);
}

int main() {
    signal(SIGCHLD, sigchld_handler);
    for (int i = 0; i < 5; ++i) {
        if (fork() == 0) {
            sleep(1);
            _exit(0);
        }
    }
    sleep(10);
    return 0;
}