In the Linux kernel, the SIGCHLD signal is not intended to interrupt the wait() system call. The reason for this is that the wait() system call is specifically designed to block the calling process until one of its child processes terminates, and to return information about that child process.
The SIGCHLD signal is generated when a child process terminates or stops, and is used to notify the parent process of this event. However, the signal does not actually interrupt the wait() system call; instead, the system call remains blocked until the child process terminates or the wait() call is interrupted by another signal.
If the SIGCHLD signal were allowed to interrupt the wait() system call, it could potentially cause race conditions or other unexpected behavior. For example, if the signal interrupted the wait() call while the child process was still running, the parent process might receive incomplete or inconsistent information about the child's status.
To avoid these issues, the Linux kernel treats the SIGCHLD signal as a notification mechanism that is separate from the wait() system call. The signal is handled asynchronously by the parent process, and does not affect the behavior of the wait() call.