## Tcl8.6.17/Tk8.6.17 Documentation > Tcl Commands > read

### 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

read — 通信路から読む Read from a channel

### 構文 SYNOPSIS

read ?-nonewline? channelId

read channelId numChars

### 説明 DESCRIPTION

第１の形式では､read 命令は channelId から全てのデータをファイル末尾迄読む｡ -nonewline 指示項目が指定されている場合､ファイルの最後の文字が改行であるとそれを遺棄する｡第２の形式では､追加の引数は､読むべき文字数を指定する｡ファイル内に numChars より少ししかデータが残っていない事態にならない限り､正確にその数の文字が読まれて返って来る; 残っていない場合､残りの全ての文字が返って来る｡もし､通信路が多-バイト文字符号体系を使う様に構成設定されていると､読み込まれた文字の個数と読んだバイトの数は同じでないかもしれない｡ 　　　　　　　 In the first form, the read command reads all of the data from channelId up to the end of the file. If the -nonewline switch is specified then the last character of the file is discarded if it is a newline. In the second form, the extra argument specifies how many characters to read. Exactly that many characters will be read and returned, unless there are fewer than numChars left in the file; in this case all the remaining characters are returned. If the channel is configured to use a multi-byte encoding, then the number of characters read may not be the same as the number of bytes read.

channelId は Tcl 標準入力通信路(stdin)の様な通信路を開く為の識別子か､open か socket の起動の返り値か､Tcl 拡張で与えられた通信路を作る命令の結果の値か､でなければならない｡通信路は入力用に開けたものでなければならない｡ ChannelId must be an identifier for an open channel such as the Tcl standard input channel (stdin), the return value from an invocation of open or socket, or the result of a channel creation command provided by a Tcl extension. The channel must have been opened for input.

もし､channelId が非同期様式であると､この命令は､要求された程に沢山の文字を読まないかもしれない: 一度､利用できる入力が全て読まれると､この命令は更なる入力を抑制するよりも､利用できるデータを返す｡もし通信路が多-バイト文字符号体系を使う様に構成設定されていると､内部緩衝域内に文字を完成できない幾らかのバイトが残るかもしれない｡この様なバイトは文字を完成するまで､又はファイル終末が読まれるまで返ってこないことになる｡ -nonewline 指定項目はもし命令がファイル終末に達する前に戻ると無視される｡ If channelId is in nonblocking mode, the command may not read as many characters as requested: once all available input has been read, the command will return the data that is available rather than blocking for more input. If the channel is configured to use a multi-byte encoding, then there may actually be some bytes remaining in the internal buffers that do not form a complete character. These bytes will not be returned until a complete character is available or end-of-file is reached. The -nonewline switch is ignored if the command returns before reaching the end of the file.

read 命令は入力内の行末並びを､通信路に拘わる -translation 指示項目に従って改行に翻訳する｡ fconfigure が入力を変更する方法についての論議は取扱説明書の fconfigure の項を参照されたい｡ Read translates end-of-line sequences in the input into newline characters according to the -translation option for the channel. See the fconfigure manual entry for a discussion on ways in which fconfigure will alter input.

### 直列入力端子で使う USE WITH SERIAL PORTS

大多数の応用譜では､直列入力端子に接続された通信路は非同期に構成設定するのが好ましい､この様に: fconfigure channelId -blocking 0 ｡こうすると､read は､概ね上で記述した様に振舞う｡同期した直列端子上での read 命令の使用には注意する必要がある｡　 For most applications a channel connected to a serial port should be configured to be nonblocking: fconfigure channelId -blocking 0. Then read behaves much like described above. Care must be taken when using read on blocking serial ports:

read channelId numChars
  この形式では､直列入力端子から numChars 文字受取る迄､文字塊を読む｡ 　 In this form read blocks until numChars have been received from the serial port.

read channelId
  この形式内では､ファイル末尾記号を受取る迄文字塊を読む､ fconfigure -eofchar を参照されたい｡もし､通信路に､ファイル末尾記号が何も構成設定されていない場合､ read は何時迄も抑制を続ける｡ In this form read blocks until the reception of the end-of-file character, see fconfigure -eofchar. If there no end-of-file character has been configured for the channel, then read will block forever.

### 用例 EXAMPLE

この例の譜はファイル全体を一度に読み､ファイル中のそれぞれの行がリスト中の要素に相当する様､リストに分割する｡ This example code reads a file all at once, and splits it into a list, with each line in the file corresponding to an element in the list:

    set fl [open /proc/meminfo]
    set data [read $fl]
    close $fl
    set lines [split $data \n]

### SEE ALSO

file, eof, fblocked, fconfigure, Tcl_StandardChannels

### KEYWORDS

blocking, channel, end of line, end of file, nonblocking, read, translation, encoding
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.