close -オープンされているチャネルを閉じます。
close channelId
チャネルchannelIdを閉じます。
ChannelId は必ず( stdin,stdout,またはstderr のような)オープンされているTclの標準チャネルの識別子であり、
Openまたは Socket、或いはTcl拡張に含まれたチャネル作成コマンドが返した結果
値でなければなりません。
本コマンドが発行されると、バッファされた出力の全てはチャネルの出力装置に書き出され、バッファされた全ての入力が放棄され、関連の内部ファイルまたはデバイスが閉じられます。そしてchannelId
は利用不能になります。
チャネルがブロックされている場合、出力の全てが実行されるまで、本コマンドは終了しません。チャネルがブロックされていなく、かつ実行されていない出力がある場合、チャネルはオープン状態を維持しながら、本コマンドは即座に終了します。出力はバックグラウンドにおいて実行され、出力実行が全て完了された時点で初めてチャネルは実際にクローズされます。
channelId がコマンドパイプラインのブロッキングチャネルである場合、close
コマンドはサブプロセスの終了を待ちます。
チャネルがインタープリタの間で共有される場合、close コマンドを呼び出す側のインタープリタでの動作は、channelId
を利用不能にするだけです。全ての共有インタープリタがチャネルを閉じるまで他の動きはしません。チャネルを引用している最後のインタープリタがcloseを呼び出した時点で前述のようなクリーンアップ動作が初めて発生します。
チャネル共有interpの記述を参照してください。
インタープリタが廃棄されるときや引用プロセスが終了した時点でチャネルは自動的に閉じられます。全ての出力がプロセス終了する前に正しく実行されるのを保証するために、close
コマンドはチャネルをブロッキングモードに切り替えます。
close コマンドは空の文字列を返します。出力をフラッシュしている間にエラーが発生した場合、そのエラーを返します。
file, open, socket, eof, Tcl_StandardChannels
blocking, channel,
close, nonblocking
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.
Copyright © 1995-1997 Roger E. Critchlow Jr.
|