#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <err.h>
#include <signal.h>

void sig_handler(int signo);

int
main(int argc, char *argv[])
{
    pid_t pid;
    struct sigaction sa;

    printf("parentPID=%ld", (long) getpid());
    fflush(stdout);

    sa.sa_handler = sig_handler;
    sa.sa_flags = SA_NOCLDWAIT;

    if (sigaction(SIGCHLD, &sa, NULL) == -1)
        err(EXIT_FAILURE, "sigaction");

    if ((pid = fork()) == 0) {
        // child must exit as soon as possible
        printf(" childPID=%ld\n", (long) getpid());
        exit(EXIT_SUCCESS);
    }
    // for scheduling purpose. child must execute first
    sleep(1);
    printf("PID=%ld sleep 10 seconds\n", (long) getpid());
    sleep(10);

    exit(EXIT_SUCCESS);
}

void
sig_handler(int signo)
{
}
