sigchld is sent by the OS, not the child process. Imagine that you kill -9 child, the child will not be able to do anything before being killed. then the parent will not be able to know the child has died. This, however isn't true. The parent can always use wait to check whether the child has died.