DetachPids.3
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:3k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1989-1993 The Regents of the University of California.
  3. '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: DetachPids.3,v 1.3 2001/04/03 14:53:45 andreas_kupries Exp $
  9. '" 
  10. .so man.macros
  11. .TH Tcl_DetachPids 3 "" Tcl "Tcl Library Procedures"
  12. .BS
  13. .SH NAME
  14. Tcl_DetachPids, Tcl_ReapDetachedProcs, Tcl_WaitPid - manage child processes in background
  15. .SH SYNOPSIS
  16. .nf
  17. fB#include <tcl.h>fR
  18. .sp
  19. fBTcl_DetachPidsfR(fInumPids, pidPtrfR)
  20. .sp
  21. fBTcl_ReapDetachedProcsfR()
  22. .sp
  23. Tcl_Pid
  24. fBTcl_WaitPidfR(fIpid, statPtr, optionsfR)
  25. .SH ARGUMENTS
  26. .AS int *statusPtr
  27. .AP int numPids in
  28. Number of process ids contained in the array pointed to by fIpidPtrfR.
  29. .AP int *pidPtr in
  30. Address of array containing fInumPidsfR process ids.
  31. .AP Tcl_Pid pid in
  32. The id of the process (pipe) to wait for.
  33. .AP int* statPtr out
  34. The result of waiting on a process (pipe). Either 0 or ECHILD.
  35. .AP int options
  36. The options controlling the wait. WNOHANG specifies not to wait when
  37. checking the process.
  38. .BE
  39. .SH DESCRIPTION
  40. .PP
  41. fBTcl_DetachPidsfR and fBTcl_ReapDetachedProcsfR provide a
  42. mechanism for managing subprocesses that are running in background.
  43. These procedures are needed because the parent of a process must
  44. eventually invoke the fBwaitpidfR kernel call (or one of a few other
  45. similar kernel calls) to wait for the child to exit.  Until the
  46. parent waits for the child, the child's state cannot be completely
  47. reclaimed by the system.  If a parent continually creates children
  48. and doesn't wait on them, the system's process table will eventually
  49. overflow, even if all the children have exited.
  50. .PP
  51. fBTcl_DetachPidsfR may be called to ask Tcl to take responsibility
  52. for one or more processes whose process ids are contained in the
  53. fIpidPtrfR array passed as argument.  The caller presumably
  54. has started these processes running in background and doesn't
  55. want to have to deal with them again.
  56. .PP
  57. fBTcl_ReapDetachedProcsfR invokes the fBwaitpidfR kernel call
  58. on each of the background processes so that its state can be cleaned
  59. up if it has exited.  If the process hasn't exited yet,
  60. fBTcl_ReapDetachedProcsfR doesn't wait for it to exit;  it will check again
  61. the next time it is invoked.
  62. Tcl automatically calls fBTcl_ReapDetachedProcsfR each time the
  63. fBexecfR command is executed, so in most cases it isn't necessary
  64. for any code outside of Tcl to invoke fBTcl_ReapDetachedProcsfR.
  65. However, if you call fBTcl_DetachPidsfR in situations where the
  66. fBexecfR command may never get executed, you may wish to call
  67. fBTcl_ReapDetachedProcsfR from time to time so that background
  68. processes can be cleaned up.
  69. .PP
  70. fBTcl_WaitPidfR is a thin wrapper around the facilities provided by
  71. the operating system to wait on the end of a spawned process and to
  72. check a whether spawned process is still running. It is used by
  73. fBTcl_ReapDetachedProcsfR and the channel system to portably access
  74. the operating system.
  75. .SH KEYWORDS
  76. background, child, detach, process, wait