All of these system calls are used to wait for state changes in a child
of the calling process, and obtain information about the child whose
state has changed. A state change is considered to be: the child
terminated; the child was stopped by a signal; or the child was resumed
by a signal. In the case of a terminated child, performing a wait
wait_nohang looks for zombies (child processes that have exited). If
it sees a zombie, it eliminates the zombie, puts the zombie's exit
status into wstat, and returns the zombie's process ID. If there are
several zombies, wait_nohang picks one. If there are children but no
zombies, wait_nohang returns 0. If there are no children, wait_nohang