By default, the system assumes that the parent process is indeed interested in such information at the time of the child's termination, and thus sends the parent the signal "SIGCHLD" to alert that there is some data about a child to be collected. Such collection is done by calling a function of the "wait" family (either "wait" itself or one of its relatives, such as "waitpid", "waitid" or "wait4"). As soon as this collection is made, the system releases those last bits of information about the child process and removes its pid from the process table. However, if the parent process lingers in collecting the child's data (or fails to do it at all), the system has no option but keep the child's pid and termination data in the process table indefinitely.