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

### 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_StandardChannels — Tcl 外部函数は如何に標準通信路を扱うか　 How the Tcl library deals with the standard channels
  説明 DESCRIPTION
  応用譜の対話機能 APPLICATION PROGRAMMING INTERFACES
  TCL 標準通信路の初期化 INITIALIZATION OF TCL STANDARD CHANNELS
  TCL 標準通信路の再初期化 RE-INITIALIZATION OF TCL STANDARD CHANNELS
  対話指示機能固有の詳細 SHELL-SPECIFIC DETAILS
  tclsh
  wish
  SEE ALSO
  KEYWORDS

### NAME

Tcl_StandardChannels — Tcl 外部函数は如何に標準通信路を扱うか　 How the Tcl library deals with the standard channels

### 説明 DESCRIPTION

この頁は Tcl 外部函数内の標準通信路の初期化と使用法を説明する｡ This page explains the initialization and use of standard channels in the Tcl library.

用語の標準通信路standard channelsは Unix の世界から持込まれ､それぞれの新しい応用についてOSによって自動的に開かれる３つの通信路を参照している｡それは stdin と stdout と stderr である｡第１のものは応用譜がそこから読込むことができる標準入力､他の２つは書込み可能の通信路で､一つは規則的な出力､他は不都合伝言文用である｡ The term standard channels comes out of the Unix world and refers to the three channels automatically opened by the OS for each new application. They are stdin, stdout and stderr. The first is the standard input an application can read from, the other two refer to writable channels, one for regular output and the other for error messages.

Tcl はこの概念を汎OSの方法を使って一般化し標準通信路を記述譜の水準にまで顕示する｡ Tcl generalizes this concept in a cross-platform way and exposes standard channels to the script level.

#### 応用譜の対話機能 APPLICATION PROGRAMMING INTERFACES

直接に標準通信路を扱う公然 API 手続函数は Tcl_GetStdChannel と Tcl_SetStdChannel である｡追加的な公然 API と看做されるのは Tcl_RegisterChannel と Tcl_CreateChannel と Tcl_GetChannel である｡ The public API procedures dealing directly with standard channels are Tcl_GetStdChannel and Tcl_SetStdChannel. Additional public APIs to consider are Tcl_RegisterChannel, Tcl_CreateChannel and Tcl_GetChannel.

### TCL 標準通信路の初期化 INITIALIZATION OF TCL STANDARD CHANNELS

Tcl 外部函数によって初期化される標準通信路の３つの場合: 明示的に要求された場合､通信路情報を返す前に暗黙の内に要求された場合､新しい通信路の登録の間に暗黙の内に要求された場合｡ Standard channels are initialized by the Tcl library in three cases: when explicitly requested, when implicitly required before returning channel information, or when implicitly required during registration of a new channel.

これ等の場合は､如何にそれらが利用できないOS固有の標準通信路を処理するかが異なる｡(通信路はそれが成功裡に開かれてなければ “利用不能” である; 譬えば､ Tcl で応用譜が Windows NT 担当業務として実行される) These cases differ in how they handle unavailable platform- specific standard channels. (A channel is not “available” if it could not be successfully opened; for example, in a Tcl application run as a Windows NT service.)

1. 一つの標準通信路は Tcl_SetStdChannel への呼出し内で明示的に指定された時に､初期化される｡他の標準通信路の状態は影響を及ぼさない｡ A single standard channel is initialized when it is explicitly specified in a call to Tcl_SetStdChannel. The states of the other standard channels are unaffected.

   喪失したOS固有の標準通信路は此処では関係ない｡この方法は記述譜水準では利用できない｡ Missing platform-specific standard channels do not matter here. This approach is not available at the script level.

2. 全ての非初期化標準通信路はOS固有の省略時設定の値に初期化される: All uninitialized standard channels are initialized to platform-specific default values:

   1. 開かれた通信路が Tcl_GetChannelNames に列挙された時(又は file channels 記述譜命令)､或は､ when open channels are listed with Tcl_GetChannelNames (or the file channels script command), or

   2. どれかの標準通信路への情報が Tcl_GetStdChannel 又は標準化された名前(stdin か stdout か stderr)の一つを指定している Tcl_GetChannel への呼出しと共に要求された時｡ when information about any standard channel is requested with a call to Tcl_GetStdChannel, or with a call to Tcl_GetChannel which specifies one of the standard names (stdin, stdout and stderr).

   OS固有の標準通信路を喪失した場合､ Tcl 標準通信路は初期化されていると看做され､直ちに閉じられる｡これは､応用譜によって次に開かれる最初の３つの Tcl 通信路は､ Tcl 標準通信路として設計されていることを意味する｡ In case of missing platform-specific standard channels, the Tcl standard channels are considered as initialized and then immediately closed. This means that the first three Tcl channels then opened by the application are designated as the Tcl standard channels.

3. 全ての非初期化標準通信路は､使用者が要求する通信路が Tcl_RegisterChannel により登録された時にOS固有の省略時設定値に初期化される｡ All uninitialized standard channels are initialized to platform-specific default values when a user-requested channel is registered with Tcl_RegisterChannel.

利用できないOS固有の標準通信路の場合､その通信路の生成が Tcl 標準通信路の初期化を惹き起こす通信路は通常の通信路にさせる｡応用譜に開かれる次の三つの Tcl 通信路が Tcl 標準通信路として設計されている｡言い換えると､応用譜に開かれる最初の四つの Tcl 通信路の内の第二から第四が Tcl 標準通信路として設計されている｡ In case of unavailable platform-specific standard channels the channel whose creation caused the initialization of the Tcl standard channels is made a normal channel. The next three Tcl channels opened by the application are designated as the Tcl standard channels. In other words, of the first four Tcl channels opened by the application the second to fourth are designated as the Tcl standard channels.

### TCL 標準通信路の再初期化 RE-INITIALIZATION OF TCL STANDARD CHANNELS

一度､ Tcl 標準通信路が上記の方法の内の一つを通して初期化されると､この Tcl 標準通信路は次の新しい通信路を次の新しい標準通信路にさせる次の Tcl_CreateChannel の呼出しを惹き起こす｡もし､一つより多くの Tcl 標準通信路が閉じられる場合､ Tcl_CreateChannel は空接続点を stdin と stdout と stderr の順序で満たす｡ Once a Tcl standard channel is initialized through one of the methods above, closing this Tcl standard channel will cause the next call to Tcl_CreateChannel to make the new channel the new standard channel, too. If more than one Tcl standard channel was closed Tcl_CreateChannel will fill the empty slots in the order stdin, stdout and stderr.

Tcl_CreateChannel は､もし空の接続点が以前に初期化されてなければ､空接続点を再初期化することを試みる｡応用譜が初期化の内の１つを雇うことこを可能にすることがその振舞いである､即ち､それ自身の Tcl 標準通信路を作成し指定することである｡ Tcl_CreateChannel will not try to reinitialize an empty slot if that slot was not initialized before. It is this behavior which enables an application to employ method 1 of initialization, i.e. to create and designate their own Tcl standard channels.

### 対話指示機能固有の詳細 SHELL-SPECIFIC DETAILS

#### tclsh

Tcl 対話指示機能(か､寧ろ､対話命令譜の核の実装を形成する Tcl_Main 函数)は標準通信路の初期化の為に方法 2 を使う｡ The Tcl shell (or rather the function Tcl_Main, which forms the core of the shell's implementation) uses method 2 to initialize the standard channels.

#### wish

窓の対話指示機能(か､寧ろ､対話命令譜の核の実装を形成する Tk_MainEx 函数)は非Unix のOS上では､標準通信路の初期化の為に方法 1 を使う( Tk_InitConsoleChannels を参照のこと)｡Unix のOS上では､ Tk_MainEx は､暗示的に標準通信路の初期化の為に方法 2 を使う｡ The windowing shell (or rather the function Tk_MainEx, which forms the core of the shell's implementation) uses method 1 to initialize the standard channels (See Tk_InitConsoleChannels) on non-Unix platforms. On Unix platforms, Tk_MainEx implicitly uses method 2 to initialize the standard channels.

### SEE ALSO

Tcl_CreateChannel, Tcl_RegisterChannel, Tcl_GetChannel, Tcl_GetStdChannel, Tcl_SetStdChannel, Tk_InitConsoleChannels, tclsh, wish, Tcl_Main, Tk_MainEx

### KEYWORDS

standard channels
Copyright © 2001 ActiveState Corporation