read

ReferenceTOPKeywords

コマンド名

read - チャネルから読み込みます。

構文

read ?-nonewline? channelId
read channelId numChars

解説

1番目のフォーマットではreadコマンドはchannelIdからファイル末尾まですべてのデータを読み込みます。 -nonewlineオプションが指定されると、ファイルの最後の文字が改行なら、捨てられます。 2番目のフォーマットでは追加の引数はどのくらいのバイトを読むべきか指定します。ファイルに残されているものがnumBytesより多ければ、ちょうど指定されただけのバイトが読み込まれ、返されます。numBytesより少ない場合は残っているすべてのバイトが返されます。チャネルがマルチバイトエンコーディングを使うように設定された場合、読まれた文字の数は読まれたバイトの数と同じでない場合があります。

ChannelIdはTcl標準入力チャネル(stdin) のようなオープンされたチャネルの識別子です。それは opensocketの呼び出しからの戻り値、またはTcl拡張に提供されたチャネル作成コマンドの結果です。そのチャネルは入力用のためオープンされている必要があります。

channelIdが非ブロックモードなら、本コマンドは要求されただけのバイトを読む必要が無くなります。 一度すべての利用可能な入力を読み込むと、コマンドはそれ以上の入力をブロックせず、利用可能なデータを返します。チャネルがマルチバイトエンコーディングを使うよう、設定された場合、実際に完全な文字を構成できない幾つかのバイトが内部バッファに残されたままでいる可能性があります。この場合、文字が利用可能な完全なものになるまで、またはファイルの末尾に到達するまでこれらのバイトが返されません。ファイル末尾に達する前にコマンドが制御を戻すと-nonewlineスイッチは無視されます。

readは入力の行末尾シーケンスをチャネルの-translationオプション従って、改行文字に翻訳します。 fconfigureが入力を変更する方法に関する説明はfconfigureのマニュアルを参照してください。

シリアルポートによる使用

ほとんどのアプリケーションに対して、シリアルポートと繋がっていたチャネルは、fconfigure channelId -blocking 0 と、非ブロックに設定されるべきです。従って、readは前述のように動作します。readがブロックモードのシリアルポートで使われるとき、注意が必要です。

read channelId numChars
この形式で、シリアルポートからnumChars個のデータを受け取るまでreadがブロックされます。

read channelId 
この形式で、ファイル末尾文字を受け入れるまでreadがブロックされます。fconfigure -eofcharを参照してください。チャネルにファイル末尾文字が設定されていない場合、readが永久にブロックされます。

参照

file, eof, fblocked, fconfigure, Tcl_StandardChannels

キーワード

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. Copyright © 1995-1997 Roger E. Critchlow Jr.