tcl7.6 C API - DetachPids






NAME

     Tcl_DetachPids,   Tcl_ReapDetachedProcs   -   manage   child
     processes in background


SYNOPSIS

     #include <tcl.h>

     Tcl_DetachPids(numPids, pidPtr)

     Tcl_ReapDetachedProcs()


ARGUMENTS

     int   numPids      (in)      Number of process ids contained
                                  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 mechanism
     for  managing  subprocesses  that are running in background.
     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 responsibil-
     ity  for  one  or  more processes whose process ids are con-
     tained 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 automati-
     cally calls Tcl_ReapDetachedProcs each time the exec command
     is executed, so in most cases it  isn't  necessary  for  any
     code  outside  of Tcl to invoke Tcl_ReapDetachedProcs.  How-
     ever, if you call Tcl_DetachPids  in  situations  where  the
     exec  command  may  never get executed, you may wish to call
     Tcl_ReapDetachedProcs from time to time so  that  background
     processes can be cleaned up.



KEYWORDS

     background, child, detach, process, wait