NAME

       Tcl_DetachPids,  Tcl_ReapDetachedProcs - manage child pro­
       cesses in background


SYNOPSIS

       #include <tcl.h>

       Tcl_DetachPids(numPids, pidPtr)

       Tcl_ReapDetachedProcs()


ARGUMENTS

       int   numPids      (in)      Number of  process  ids  con­
                                    tained  in  the array pointed
                                    to by pidPtr.

       int   *pidPtr      (in)      Address of  array  containing
                                    numPids process ids.
_________________________________________________________________



DESCRIPTION

       Tcl_DetachPids  and Tcl_ReapDetachedProcs provide a mecha­
       nism for managing subprocesses that are running  in  back­
       ground.  These procedures are needed because the parent of
       a process must eventually invoke the waitpid  kernel  call
       (or  one  of a few other similar kernel calls) to wait for
       the child to exit.  Until the parent waits for the  child,
       the  child's  state  cannot be completely reclaimed by the
       system.  If a  parent  continually  creates  children  and
       doesn't  wait  on  them,  the  system's process table will
       eventually overflow, even if all the children have exited.

       Tcl_DetachPids  may be called to ask Tcl to take responsi­
       bility for one or more processes  whose  process  ids  are
       contained  in  the  pidPtr  array passed as argument.  The
       caller presumably has started these processes  running  in
       background  and  doesn't  want  to  have to deal with them
       again.

       Tcl_ReapDetachedProcs invokes the waitpid kernel  call  on
       each  of the background processes so that its state can be
       cleaned up if it has exited.  If the process hasn't exited
       yet,  Tcl_ReapDetachedProcs  doesn't  wait for it to exit;
       it will check again the next  time  it  is  invoked.   Tcl
       automatically  calls  Tcl_ReapDetachedProcs  each time the
       exec command is executed, so in most cases it isn't neces­
       sary  for  any  code  outside of Tcl to invoke Tcl_ReapDe­
       tachedProcs.  However, if you call Tcl_DetachPids in situ­
       ations  where the exec command may never get executed, you
       may wish to call Tcl_ReapDetachedProcs from time  to  time
       background, child, detach, process, wait