ファイルベースチャネル、あるいはコマンドパイプラインのチャネルをオープンします。read、puts、そしてcloseなどのコマンドの呼び出しに使われるチャネル識別子を返します。ない場合、このコマンドはファイルをオープンします。fileNameはオープンすべきファイルの名前を指定します。filenameマニュアルエントリで記述されているルールに従わなくてはなりません。access引数は存在するなら、ファイル(またはコマンドパイプライン)がどのようにアクセスされるかを示します。次の値の何れかを持ちます。rr+ww+aa+rファイルを読み取り専用にオープンします。ファイルは既に存在していなければなりません。accessが指定されない場合のデフォルト値です。r+ファイルを読み書き両用にオープンします。ファイルは既に存在していなければなりません。w書き込み用に空のファイルを開きます。指定したファイルが既に存在すると、そのファイルの内容は破棄されます。w+読み書き両方のモードで空のファイルを開きます。指定したファイルが既に存在すると、そのファイルの内容は破棄されます。aファイルを書き込み専用にオープンします。ファイルが存在しなければ新しい空のファイルが作成されます。置はファイルの末尾に設定されます。a+ファイルを読み書き両用にオープンします。ファイルが存在しなければ新しい空のファイルが作成されます。置はファイルの末尾に設定されます。2番目の形式ではaccessは以下のフラグから構成されるリストです。すべてのフラグはPOSIX標準に従います。フラグは全てRDONLY、WRONLYあるいはRDWRのいずれかでなければなりません。RDONLYWRONLYRDWRAPPENDCREATEXCLNOCTTYNONBLOCKTRUNCRDONLYファイルを読み込み専用にオープンします。WRONLYファイルを書き込み専用にオープンします。RDWRファイルを読み書き両用にオープンします。APPENDファイルポインタを各書き出しの直前ファイルの末尾に設定します。CREATファイルがまだ存在していなければ作成します(このフラグが無ければ、ファイルが存在しない場合はエラーになります)。EXCLCREATも指定されている場合、ファイルが既に存在している場合にエラーが返されます。NOCTTYファイルが端末デバイスの場合、このフラグはファイルがプロセスのコントロールターミナルになることを防止します。NONBLOCKファイルをオープンしている間に、及び後続する可能なI/O操作の間で、プロセスがブロックすることを防止します。このフラグの正確な動作はシステムとデバイスに依存します。(ファイルを非ブロックモードにするにはfconfigureコマンドを使った方が良いです)。詳細はシステムのドキュメントのシステムコールopenのO_NONBLOCKフラグを参照してください。TRUNCファイルが存在するなら長さ0に切りつめられます。permissions(整数)はプロセスのファイルモード作成マスクと共にで新しいファイルの許可を設定することに使われます。permissionsのディフォルトは0666です。binaryに変更する必要があります。引数の一部として渡す文字"b"と対応します。execの引数と同じ形式で記述する引数のリストとして扱います。子は、accessの値に依存し、コマンドの入力パイプへの書き込み、或いは出力パイプからの読み出しに使われます。書き込み専用(例accessがw)のアクセスが行われている場合、コマンドにより上書きがされていない限り、パイプラインの標準出力は現在の標準出力にされます。accessがr)、コマンドにより上書きがされていない限り、パイプラインの標準入力は現在の標準入力にされます。openに返されたチャネルIDを引数として使い、spawnedプロセスのIDはpidコマンドによってアクセス可能です。シリアル通信fileNameがシリアルポートを示している場合、指定されたシリアルポートはプラットフォームに依存した方法でオープンされ、初期化されます。ISSUESセクションで述べられます。fconfigureコマンドはシリアルポートに特有の追加configurationオプションを検索・設定するために使われます。comX:で、Xは基本的に1から4までの番号で、システムが偶然4個以上のシリアルポートを持っている場合、有効番号は1から9までの番号になります。存在しない番号をオープンしたり、番号9を超えるシリアルポートをオープンすると失敗になります。1つのシリアルポートをオープンするフォーマットは、ファイル名\\.\comXです。98上でかなり遅いことです。コマンドパイプライン両方が、標準入出力を使用していると、不都合が発生する場合があります。コマンドパイプラインが読み取り用にオープンされると、コンソールで入力された行のいくつかはコマンドパイプラインに送られ、いくつかはTclのインタプリタに送られてしまいます。コマンドパイプラインが書き出し用にオープンされると、コンソールに入力されたキー入力はパイプが閉じられるまで表示されません。この不具合はコマンドパイプラインが16ビットと32ビット両方のアプリケーションを実行するときに起こります。これらの問題はTclとサブアプリケーションの両方がコンソールを取り合う場合のみ起こります。トから起動された場合、Tclはコンソールにアクセスしないので、前述の問題は起こりません。コマンドパイプラインが標準入出力を使用しないでファイルへまたはファイルからリダイレクトする場合も、前述の問題は起こりません。9516ビットDOSアプリケーションを実行するコマンドパイプラインは読み書き両用にはオープンできません。パイプから標準入力を受け取る16ビットDOSアプリケーションと、パイプへ標準出力を送る16ビットDOSアプリケーションは同期的に動作するためです。16ビットDOSアプリケーションを実行しないコマンドパイプラインは非同期的に動作し、読み書き両用にオープンできます。コマンドパイプライン両方が、標準入出力を使用していると、不都合が発生する場合があります。プラインが、32ビットアプリケーションからの読み込み用にオープンされると、コンソールに入力されたキー入力のいくつかはコマンドパイプラインに送られ、いくつかはTclのインタプリタに送られます。コマンドパイプラインが32ビットアプリケーションへの書き出し用にオープンされると、コンソールに入力されたキー入力はパイプが閉じられるまで表示されません。これらの問題はTclとサブアプリケーションの両方がコンソールを取り合う場合にのみ起こります。トから起動された場合、Tclはコンソールにアクセスしないので、前述の問題は起こりません。コマンドパイプラインが標準入出力を使用しないでファイルへ、またはファイルからリダイレクトする場合も、前述の問題は起こりません。Tclが対話的に動作しているかに関わらず、16ビットDOSアプリケーションからの読み取り用にコマンドパイプラインがオープンされると、openの呼び出しはコマンドパイプラインの標準出力からファイル末尾を受け取るまで制御を返しません。コマンドパイプラインが、16ビットDOSアプリケーションへの書き出し用にオープンされると、コマンドパイプラインが実際に閉じられるまでいかなるデータもコマンドパイプラインの標準出力に送られません。この問題が発生する原因は上で示されたように16ビットDOSアプリケーションが同期的に動作するためです。MacintoshMacintoshではシリアルポートのオープンは現在のところ実装されていません。アプリケーションが標準入出力の概念をサポートしていないので、Macintoshはコマンドパイプラインのオープンをサポートしていません。UnixシリアルポートをオープンするためのfileNameの正当な値は基本的には/dev/ttyXフォーマットで、Xはaかbです。シリアルポートにマップされた擬似ファイルも使用できます。Tclが対話的に動作していると、本物のコンソールとコマンドパイプライン両方が標準入出力を使用している場合、不都合が発生することがあります。コマンドパイプラインが読み取り用にオープンされると、コンソールで入力された行のいくつかはコマンドパイプラインに送られ、いくつかはTclのインタプリタに送られてしまいます。この問題はTclとサブアプリケーションの両方がコンソールを取り合う場合のみ起こります。コマンドパイプラインがスクリプトから起動された場合、Tclはコンソールにアクセスしないので、前述の問題は起こりません。コマンドパイプラインが標準入出力を使用しないでファイルへまたはファイルからリダイレクトする場合も、前述の問題は起こりません。ISSUESセクションを参照してください。