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

### 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_GetStdChannel, Tcl_SetStdChannel — 標準通信路の取り出しと再配置の為の手続函数　 procedures for retrieving and replacing the standard channels
  SYNOPSIS
    #include <tcl.h>
    Tcl_Channel
    Tcl_GetStdChannel(type)
    Tcl_SetStdChannel(channel, type)
  引数 ARGUMENTS
    int type (入力in)
    Tcl_Channel channel (入力in)
  説明 DESCRIPTION
  SEE ALSO
  KEYWORDS

### NAME

Tcl_GetStdChannel, Tcl_SetStdChannel — 標準通信路の取り出しと再配置の為の手続函数　 procedures for retrieving and replacing the standard channels

### SYNOPSIS

#include <tcl.h>
Tcl_Channel
Tcl_GetStdChannel(type)
Tcl_SetStdChannel(channel, type)

### 引数 ARGUMENTS

int type (入力in)
  取り出し又は修正する為の標準通信路の為の識別子｡ TCL_STDIN か TCL_STDOUT か TCL_STDERR の内の一つでなければならない｡　 The identifier for the standard channel to retrieve or modify. Must be one of TCL_STDIN, TCL_STDOUT, or TCL_STDERR.

Tcl_Channel channel (入力in)
  指定された標準通信路の為の新しい値として使用するための通信路｡　 The channel to use as the new value for the specified standard channel.

### 説明 DESCRIPTION

Tcl は三つの特別の通信路を定義する､それはもし､他の通信路が指定されていない場合に､種々の関連する命令の入出力によって使われる｡標準入力通信路は､stdin の通信路名を有し､ read と gets によって使われる｡標準出力通信路は stdout の名前を有し､ puts によって使われる｡標準不都合通信路は stderr の名前を有し不都合の報告に使われる｡更に､標準通信路は､他のどの様な向け先変更のない所で exec や open を使って作成されたどの様な子供の処理系によっても階層化される｡ 　 Tcl defines three special channels that are used by various I/O related commands if no other channels are specified. The standard input channel has a channel name of stdin and is used by read and gets. The standard output channel is named stdout and is used by puts. The standard error channel is named stderr and is used for reporting errors. In addition, the standard channels are inherited by any child processes created using exec or open in the absence of any other redirections.

標準通信路は実際は他の通常の通信路の為の別名である｡標準通信路に結合した現在の通信路は type として TCL_STDIN 又は TCL_STDOUT 又は TCL_STDERR の中の一つを伴い Tcl_GetStdChannel を呼び出しで取り返すことができる｡返り値は適正な通信路か NULL である｡ 　　　 The standard channels are actually aliases for other normal channels. The current channel associated with a standard channel can be retrieved by calling Tcl_GetStdChannel with one of TCL_STDIN, TCL_STDOUT, or TCL_STDERR as the type. The return value will be a valid channel, or NULL.

新しい通信路は､新しい通信路か NULL を channel 引数として伴って Tcl_SetStdChannel を呼出すことにより type 指定された標準通信路として設定できる｡もし指定された通信路が後の Tcl_Close 呼出しによって閉じられた場合､相当する標準通信路は自動的に NULL に設定される｡ 　　　 A new channel can be set for the standard channel specified by type by calling Tcl_SetStdChannel with a new channel or NULL in the channel argument. If the specified channel is closed by a later call to Tcl_Close, then the corresponding standard channel will automatically be set to NULL.

もし channel として､非 NULL 値が Tcl_SetStdChannel に渡された場合､同じ値を Tcl_RegisterChannel に､この様に渡すべき: 　　　 If a non-NULL value for channel is passed to Tcl_SetStdChannel, then that same value should be passed to Tcl_RegisterChannel, like so:

    Tcl_RegisterChannel(NULL, channel);

これは､何かの段取りの参照の考慮に失敗している Tcl_SetStdChannel 内の誤った機能の回避策である｡この誤った機能は Tcl_SetStdChannel を呼出している何かの既存の命令符号の仮定を否定しない限り直せない｡ 　　　 This is a workaround for a misfeature in Tcl_SetStdChannel that it fails to do some reference counting housekeeping. This misfeature cannot be corrected without contradicting the assumptions of some existing code that calls Tcl_SetStdChannel.

もし Tcl_GetStdChannel が Tcl_SetStdChannel より前に呼ばれると､ Tcl は適正なOS固有の標準ファイル処理子を包含する新しい通信路を構築する｡もし Tcl_SetStdChannel が Tcl_GetStdChannel より前に呼ばれると､省略時設定の通信路は作成されない｡ 　　　 If Tcl_GetStdChannel is called before Tcl_SetStdChannel, Tcl will construct a new channel to wrap the appropriate platform-specific standard file handle. If Tcl_SetStdChannel is called before Tcl_GetStdChannel, then the default channel will not be created.

もし NULL channel 引数を伴った Tcl_SetStdChannel 呼出しか､その通信路上の Tcl_Close の呼出しかにより､標準通信路の内の一つが NULL に設定された場合､次の Tcl_CreateChannel 呼出しは自動的に標準通信路に新しく作成された通信路を設定する｡もし一つよりも多くの標準通信路が NULL の場合､標準通信路は､標準入力に始まり､標準出力が続き､標準不都合が最後に定義される｡ 　　 If one of the standard channels is set to NULL, either by calling Tcl_SetStdChannel with a NULL channel argument, or by calling Tcl_Close on the channel, then the next call to Tcl_CreateChannel will automatically set the standard channel with the newly created channel. If more than one standard channel is NULL, then the standard channels will be assigned starting with standard input, followed by standard output, with standard error being last.

標準通信路とそれを考慮した Tcl 外部函数の挙動に関する一般的論文に就いては Tcl_StandardChannels を参照されたい｡ 　　 See Tcl_StandardChannels for a general treatise about standard channels and the behavior of the Tcl library with regard to them.

### SEE ALSO

Tcl_Close, Tcl_CreateChannel, Tcl_Main, tclsh

### KEYWORDS

standard channel, standard input, standard output, standard error
Copyright © 1996 Sun Microsystems, Inc.