## Tcl9.0.3/Tk9.0.3 Documentation > Tcl Commands > process

### 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::process — 仔手続き函数の管理 Subprocess management
  構文 SYNOPSIS
  説明 DESCRIPTION
    ::tcl::process autopurge ?flag?
    ::tcl::process list
    ::tcl::process purge ?pids?
    ::tcl::process status ?switches? ?pids?
      code
      msg
      errorCode
      -wait
      --
  用例 EXAMPLES
  SEE ALSO
  KEYWORDS

### NAME

tcl::process — 仔手続き函数の管理 Subprocess management

### 構文 SYNOPSIS

::tcl::process option ?arg arg ...?

### 説明 DESCRIPTION

この命令は､open命令やexec命令によって創生されてその仔手続き函数の函数手続識別子(PID)によって識別される仔手続き函数を管理する方法を提供する｡正規の指示項目(縮約記法も可能)は以下の通り: This command provides a way to manage subprocesses created by the open and exec commands, as identified by the process identifiers (PIDs) of those subprocesses. The legal options (which may be abbreviated) are:

::tcl::process autopurge ?flag?
  自動浄化の機能｡もし flag が論理値として指定されると､その値により自動浄化を活動するか休止する｡全ての場合､現在の状態を論理値として返す｡自動浄化が活性の時､ exec 命令が実行されるか､ open 命令に創生された pipe 経路が閉鎖されると､その度毎に Tcl_ReapDetachedProcs が呼ばれる｡自動浄化が休止中の時は､明示的に ::tcl::process 浄化が呼ばれなければならない｡無為設定では自動浄化は活性である｡ Automatic purge facility. If flag is specified as a boolean value then it activates or deactivate autopurge. In all cases it returns the current status as a boolean value. When autopurge is active, Tcl_ReapDetachedProcs is called each time the exec command is executed or a pipe channel created by open is closed. When autopurge is inactive, ::tcl::process purge must be called explicitly. By default autopurge is active.

::tcl::process list
  仔手続き函数 PID のリストを返す｡これは､現在実行中の全ての仔手続き函数､及び､終了したが対応する手続き函数表内の記載が未だ削除されてない全ての仔手続き函数を含む｡ Returns the list of subprocess PIDs. This includes all currently executing subprocesses and all terminated subprocesses that have not yet had their corresponding process table entries purged.

::tcl::process purge ?pids?
  完了した仔手続き函数に結合した全てのデータを清浄化する｡もし pids が PID のリストとして指定されると､この命令は､仔手続き函数に合致するデータがあれば､それのみを清浄化する｡もし､列挙された手続き函数が猶活性であると､この命令はその手続き函数には何もしない｡その仔手続き函数に対応しないどのPIDも無視される｡ Cleans up all data associated with terminated subprocesses. If pids is specified as a list of PIDs then the command only cleans up data for the matching subprocesses if they exist. If a process listed is still active, this command does nothing to that process. Any PID that does not correspond to a subprocess is ignored.

::tcl::process status ?switches? ?pids?
  仔手続き函数 PID からそれぞれの状態への対応の辞書を返す｡もし pids が PID のリストとして指定されると､この命令は､それに合致する仔手続き函数があれば､その状態のみを返す｡仔手続き函数に対応しないどのPIDも無視される｡活性な手続き函数では､状態は空値である｡完了した手続き函数では､状態は次の書式に従ったリストである: “{code ?msg errorCode?}” ここでは; Returns a dictionary mapping subprocess PIDs to their respective status. If pids is specified as a list of PIDs then the command only returns the status of the matching subprocesses if they exist. Any PID that does not correspond to a subprocess is ignored. For active processes, the status is an empty value. For terminated processes, the status is a list with the following format: “{code ?msg errorCode?}”, where:

  code
    標準 Tcl 戻り符号､即ち､TCL_OK は0 ､TCL_ERROR は 1 ｡ is a standard Tcl return code, i.e., 0 for TCL_OK and 1 for TCL_ERROR,

  msg
    人可読な不都合伝言文｡ is the human-readable error message,

  errorCode
    errorCode 大域変数と同じ書式を使う uses the same format as the errorCode global variable

    註意すべきは､msg と errorCode は異常な終了をした手続き函数のためにのみ存在する(即ち､code が非-零のもの)｡実質的には､この命令は､-wait 切替子が設定されてない限り(下記参照)､非抑制の振舞では WNOHANG 旗徴を伴ったTcl_WaitPid を呼ぶ｡ Note that msg and errorCode are only present for abnormally terminated processes (i.e. those where the code is nonzero). Under the hood this command calls Tcl_WaitPid with the WNOHANG flag set for non-blocking behavior, unless the -wait switch is set (see below).

    更に､::tcl::process status は次の切替子を受容れる: Additionally, ::tcl::process status accepts the following switches:

    -wait
      無為設定では､命令は､この切替子が設定されていない限り直ちに制御を返す(基礎になっている Tcl_WaitPid が WNOHANG 旗徴を設定されて呼出される)｡もし PID のリストとして pids が指定されていると､合致の仔処理機能の状態が利用できる迄､命令は待つ｡もし pids が設定されていないと､この命令は全ての既知の仔処理機能を待つ｡ By default the command returns immediately (the underlying Tcl_WaitPid is called with the WNOHANG flag set) unless this switch is set. If pids is specified as a list of PIDs then the command waits until the status of the matching subprocesses are available. If pids was not specified, this command will wait for all known subprocesses.

    --
      切替子の末尾を印す｡これに引き続く引数は縦え- で始まっていていも最初の arg として扱われる｡ Marks the end of switches. The argument following this one will be treated as the first arg even if it starts with a -.

### 用例 EXAMPLES

これらは ::tcl::process の使用を示す｡::tcl::process status からの幾つかの結果は可読性の為に多くの行に分割されている｡ These show the use of ::tcl::process. Some of the results from ::tcl::process status are split over multiple lines for readability.

    ::tcl::process autopurge
         → true
    ::tcl::process autopurge false
         → false

    set pid1 [exec command1 a b c | command2 d e f &]
         → 123 456
    set chan [open "|command1 a b c | command2 d e f"]
         → file123
    set pid2 [pid $chan]
         → 789 1011

    ::tcl::process list
         → 123 456 789 1011

    ::tcl::process status
         → 123 0
           456 {1 "child killed: write on pipe with no readers" {
             CHILDKILLED 456 SIGPIPE "write on pipe with no readers"}}
           789 {1 "child suspended: background tty read" {
             CHILDSUSP 789 SIGTTIN "background tty read"}}
           1011 {}

    ::tcl::process status 123
         → 123 0

    ::tcl::process status 1011
         → 1011 {}

    ::tcl::process status -wait
         → 123 0
           456 {1 "child killed: write on pipe with no readers" {
             CHILDKILLED 456 SIGPIPE "write on pipe with no readers"}}
           789 {1 "child suspended: background tty read" {
             CHILDSUSP 789 SIGTTIN "background tty read"}}
           1011 {1 "child process exited abnormally" {
             CHILDSTATUS 1011 -1}}

    ::tcl::process status 1011
         → 1011 {1 "child process exited abnormally" {
             CHILDSTATUS 1011 -1}}

    ::tcl::process purge
    exec command1 1 2 3 &
         → 1213
    ::tcl::process list
         → 1213

### SEE ALSO

exec, open, pid, Tcl_DetachPids, Tcl_WaitPid, Tcl_ReapDetachedProcs

### KEYWORDS

background, child, detach, process, wait
Copyright © 2017 Frederic Bonnet.