11/3/71                                             SYS WAIT (II)





NAME            wait  --  wait for process to die



SYNOPSIS        sys     wait            / wait = 7.

                (process ID in r0)



DESCRIPTION     wait causes its caller to delay until one of its

                child processes terminates.  If any child has al-

                ready died, return is immediate; if there are no

                children, return is immediate with the error bit

                set.  In the case of several children several

                waits are needed to learn of all the deaths.



FILES           --



SEE ALSO        fork



DIAGNOSTICS     error bit (c-bit) on if no children not previ-

                ously waited for.



BUGS            A child which dies but is never waited for is not

                really gone in that it still consumes disk swap

                and system table space.  This can make it impos-

                sible to create new processes.  The bug can be

                noticed when several "&" separators are given to

                the shell not followed by a command without an

                ampersand.  Ordinarily things clean themselves up

                when an ordinary command is typed, but is possi-

                ble to get into a situation in which no commands

                are accepted, so no waits are done; the system is

                then hung.



                The fix, probably, is to have a new kind of fork

                which creates a process for which no wait is nec-

                essary (or possible); also to limit the number of

                active or inactive descendants allowed to a pro-

                cess.



OWNER           ken, dmr