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  |
          responsibility  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 necessary for  |
          any  code  outside  of  Tcl to invoke Tcl_ReapDetachedProcs.  |
          However, 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