## Tcl8.6.17/Tk8.6.17 Documentation > Tcl C API > DetachPids

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    Tcl_DetachPids, Tcl_ReapDetachedProcs, Tcl_WaitPid — 背景処理内で子供の処理課程を管理する manage child processes in background
  SYNOPSIS
    #include <tcl.h>
    Tcl_DetachPids(numPids, pidPtr)
    Tcl_ReapDetachedProcs()
    Tcl_Pid
    Tcl_WaitPid(pid, statusPtr, options)
  引数 ARGUMENTS
    int numPids (入力in)
    int *pidPtr (入力in)
    Tcl_Pid pid (入力in)
    int *statusPtr (出力out)
    int options (入力in)
  説明 DESCRIPTION
  KEYWORDS

### NAME

Tcl_DetachPids, Tcl_ReapDetachedProcs, Tcl_WaitPid — 背景処理内で子供の処理課程を管理する manage child processes in background

### SYNOPSIS

#include <tcl.h>
Tcl_DetachPids(numPids, pidPtr)
Tcl_ReapDetachedProcs()
Tcl_Pid
Tcl_WaitPid(pid, statusPtr, options)

### 引数 ARGUMENTS

int numPids (入力in)
  pidPtr によって指された配列内に含まれる手続函数識別子の個数｡　 Number of process ids contained in the array pointed to by pidPtr.

int *pidPtr (入力in)
  numPids 手続函数識別子 を含む配列の番地｡　 Address of array containing numPids process ids.

Tcl_Pid pid (入力in)
  待つ為の手続き(パイプ)の識別子｡　 The id of the process (pipe) to wait for.

int *statusPtr (出力out)
  手続き(パイプ)上の待ちの結果｡ 0 か ECHILD の何れか｡　 The result of waiting on a process (pipe). Either 0 or ECHILD.

int options (入力in)
  待ちを制御する指示項目｡WNOHANG は手続を確認している間待たないことを指定する｡　 The options controlling the wait. WNOHANG specifies not to wait when checking the process.

### 説明 DESCRIPTION

Tcl_DetachPids と Tcl_ReapDetachedProcs は､背景内で実行される副処理課程を管理する仕組みを提供する｡これらの手続函数が必要とされる理由は､処理課程の親は､子供の完了を待つ為に最終的に waitpid 核呼出し(又は､他の似た核呼出しの内の一つ)を起動する必要があるから｡親が子供を待つ間､子供の状態は､完全にはシステムによって取戻すことができない｡もし親が継続して子供を生成しその完了を待たない場合､たとえ全ての子供が完了してもOSの処理課程の表は最終的には収容しきれなくなる｡ 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 は､その処理課程の識別子が引数として渡された pidPtr 内に含まれている１つ或はそれ以上の処理課程に対する責務を取ることを Tcl に依頼する為に呼ばれるかもしれない｡呼出し側は恐らく､これ等の処理課程の実行を背景内で開始しており､それを再度扱うことを望まないであろう｡ 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 does not want to have to deal with them again.

Tcl_ReapDetachedProcs は､それが終った時にその状態が浄化できる様にそれぞれの背景の処理課程上の waitpid 核呼出しを起動する｡もし処理課程から出ていない場合､ Tcl_ReapDetachedProcs は完了を待たない; それは次回起動される時再度検査する｡ Tcl は exec 命令が実行される度に毎回自動的に Tcl_ReapDetachedProcs を呼ぶので､大部分の場合､ Tcl_ReapDetachedProcs を起動する為の Tcl の外の何かの命令譜が必要である｡しかし､もし exec 命令が決して実行されないような状況で Tcl_DetachPids を呼ぶ場合は､背景処理が浄化される様に随時 Tcl_ReapDetachedProcs を呼ぶことが望める｡ 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 has not exited yet, Tcl_ReapDetachedProcs does not 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 is not 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.

Tcl_WaitPid は、大量に産まれた処理課程の終了を待ち､大量に産まれた処理課程が未だ実行されているかを調べる為にOSによって提供される機能の周辺の軽い包みである｡ Tcl_ReapDetachedProcs によって使われ､通信路系がＯＳ系を移植して利用する為に使われる｡ Tcl_WaitPid is a thin wrapper around the facilities provided by the operating system to wait on the end of a spawned process and to check a whether spawned process is still running. It is used by Tcl_ReapDetachedProcs and the channel system to portably access the operating system.

### KEYWORDS

background, child, detach, process, wait
Copyright © 1989-1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.