如果存在 access 参数,则它指示以何种方式访问文件(或命令管道)。在第一种形式下 access 可以是下列值:
在第二种形式下,access 由某些下列标志的一个列表构成,所有这些都有标准的 POSIX 意义。 必须有一个标志是 RDONLY、WRONLY 或 RDWR 中的一个。
如果作为打开过程的一部分而建立了一个新文件,使用 permissions (一个整数)并联合进程的文件模式建立掩码为新文件设置权限。Permissions 缺省为 0666。
译注:
open a command pipeline for writing :
Tcl ==> Pipeline ==> command
+--------+ +--------+ +--------+ +--------+
| stdin |<------+ stdin | +-->| pipein | +--+ stdin |
+--------+ +--------+ | +--------+ | +--------+
| stdout |<--+---+ stdout | | | pipeout|<--+ | stdout +--+
+--------+ | +--------+ | +--------+ +--------+ |
| | stderr | | | stderr | |
| +--------+ | +--------+ |
| | channel+--+ |
| +--------+ |
+-----------------------------------------------+
open a command pipeline for reading :
+-----------------------------------------------+
| |
+--------+ | +--------+ +--------+ +--------+ |
| stdin |<--+---+ stdin | | pipein |<--+ | stdin +--+
+--------+ +--------+ +--------+ | +--------+
| stdout |<------+ stdout | +-->| pipeout| +--+ stdout |
+--------+ +--------+ | +--------+ +--------+
| stderr | | | stderr |
+--------+ | +--------+
| channel+--+
+--------+
Tcl <== Pipeline <== command
在交互运行 Tcl 的时候,如果存在一个控制台,则在真实的控制台和使用标准输入或输出的一个命令管道之间可能有一些奇怪的相互作用。如果为从一个 32-bit 应用程序读而打开一个命令管道,在这个控制台键入的一些击键将被发送到命令管道而一些击键将别发送到 Tcl 求值器。如果为向一个 32-bit 应用程序写而打开一个命令管道,在管道关闭之前,在控制台中将一直没有输出是可见的。这些问题只发生在 Tcl 和子应用程序同时竞争这个控制台的时候。如果命令管道是从一个脚本中启动的,所以 Tcl 不访问控制台,或者命令管道不使用标准输出或输出,而是重定向(从或)到一个文件,那么上述问题不发生。
不论 Tcl 是否在交互的运行,如果为从一个 16-bit DOS 应用程序读而打开一个命令管道,在从命令管道的标准输出收到文件结束之前,对 open 的调用一直不返回。如果为向一个 16-bit DOS 应用程序写而打开一个命令管道,在管道实际上被关闭之前,没有数据被发送到命令管道的标准输出。象上面描述的那样,这个问题发生的原因是 16-bit DOS 应用程序同步运行。
在 Macintosh 不支持打开命令管道,原因是应用程序不支持标准输入或输出的概念。
在交互运行 Tcl 的时候,如果存在一个控制台,则在真实的控制台和使用标准输入或输出的一个命令管道之间可能有一些奇怪的相互作用。如果为读而打开一个命令管道,在这个控制台键入的一些行将被发送到命令管道而一些行将别发送到 Tcl 求值器。这些问题只发生在 Tcl 和子应用程序同时竞争这个控制台的时候。如果命令管道是从一个脚本中启动的,所以 Tcl 不访问控制台,或者命令管道不使用标准输出或输出,而是重定向(从或)到一个文件,那么上述问题不发生。
关于在不同平台上执行应用程序请参见 exec 命令的移植要点章节来得到不特定于命令管道的额外的信息。
Copyright © 1993 The Regents of the University of California. Copyright © 1994-1996 Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.