Tcl_DetachPids(3Tcl) Tcl_DetachPids(3Tcl)
Tcl_DetachPids, Tcl_ReapDetachedProcs - manage child processes in
background
#include <tcl.h>
Tcl_DetachPids(numPids, pidPtr)
Tcl_ReapDetachedProcs() |
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.
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.
background, child, detach, process, wait
PPPPaaaaggggeeee 1111 [ Back ]
|