| exec(3tcl) | Tcl Built-In Commands | exec(3tcl) | 
NAME¶
exec - 调用子进程总览 SYNOPSIS¶
exec ?switches? arg ?arg ...?描述 DESCRIPTION¶
这个命令把它的参数作为对要执行的一个或多个子进程的指定来对待。参数接受标准的 shell 管道的格式(form),即每个 arg 都变成某个命令的一个字,并且每个不同的命令都变成一个子进程。 如果给 exec的初始的参数以 - 开始,则它们被作为命令行开关而不是管道指定的一部分来对待。当前支持下列开关:- -keepnewline
 - 在管道的输出中保持尾随的换行符。通常要删除尾随的换行符。
 
- --
 - 标志开关(部分)的结束。此后的参数即使以-开头仍被作为第一个 arg 来对待。
 
- |
 - 分隔在管道中不同的命令。前面的命令的标准输出将被输送给后面命令的标准输入中。
 
- |&
 - 分隔在管道中不同的命令。前面命令的标准输出和标准错误输出都被输送到后面的标准输入中。这种重定向格式取代象 2> 和 >& 这样的格式。
 
- < fileName
 - 打开由 fileName 指名的文件并作为在管道中的第一个命令的标准输入来使用。
 
- <@ fileId
 - FileId
      必须是一个打开了的文件的标识符,比如是从以前的
      open
      调用的返回值。作为在管道中的第一个命令的标准输入来使用。
      FileId
    
必须用读模式来打开。 
- << value
 - Value 被传递给第一个命令来作为它的标准输入。
 
- > fileName
 - 最后的命令的标准输出被重定向到叫 fileName 的文件中,覆盖它以前的内容。
 
- 2> fileName
 - 把管道中所有命令的标准错误输出重定向到叫 fileName 的文件中,覆盖它以前的内容。
 
- >& fileName
 - 最后的命令的标准输出和所有命令的标准错误输出都被重定向到叫 fileName的文件中,覆盖它以前的内容。
 
- >> fileName
 - 最后的命令的标准输出被重定向到叫 fileName 的文件中,对它进行添加而不是覆盖它。
 
- 2>> fileName
 - 在管道中的所有的命令的标准错误输出都被重定向到叫 fileName的文件中,对它进行添加而不是覆盖它。
 
- >>& fileName
 - 最后的命令的标准输出和所有命令的标准错误输出被重定向到叫 fileName 的文件中,对它进行添加而不是覆盖它。
 
- >@ fileId
 - FileId 必须是一个打开了的文件的标识符,比如是从以前的 open调用的返回值。最后的命令的标准输出被重定向到 fileId(指定)的文件中。文件必须用读模式来打开。
 
- 2>@ fileId
 - FileId 必须是一个打开了的文件的标识符,比如是从以前的 open调用的返回值。在管道中的所有命令的标准错误输出都被重定向到 fileId(指定)的文件中。文件必须用写模式来打开。
 
- >&@ fileId
 - FileId 必须是一个打开了的文件的标识符,比如是从以前的 open调用的返回值。最后的命令的标准输出和所有命令的标准错误输出被重定向到 fileId(指定)的文件中。文件必须用写模式来打开。
 
移植要点 PORTABILITY ISSUES¶
- Windows (所有版本)
 - 从/向一个套接口读或写,使用“@
      
      fileId”记号(notation),不能工作。在从一个套接口读的时候,一个16位
      DOS 应用程序将挂起(hang)
      而一个32位应用程序将立即返回文件结束(end-of-file)。在任意类型的应用向一个套接口写的时候,如果控制台存在的话,信息转而发送到控制台,否则就丢弃信息。
    Tk 控制台文本组件不提供真实的标准 IO 功能。在 Tk 下,从标准输入重定向的时候,所有的应用将看到一个立即的文件结束;重定向到标准输出或标准错误输出的信息将被丢弃。要么是正斜杠要么是反斜杠被接受为给 Tcl 命令的参数的路径分隔符。在执行一个应用的时候,对应用的路径名指定也可以包含正或反斜杠作为路径分隔符。但是必须记住,多数 Windows 应用接受有正斜杠的参数作为选项分界符(delimiter)而反斜杠只在路径中。指定了有正斜杠的一个路径名的给应用的任何参数将不被自动的转换成使用反斜杠字符。如果一个参数包括作为路径分隔符的正斜杠,它可以被识别成路径名,也可以不被识别成路径名,这依赖于(具体)程序。额外的,在调用一个16位 DOS 或 Windows 3.X 应用时,所有路径名必须使用短的、神秘的(cryptic)的路径格式(例如,使用“applba~1.def”来替代 “applbakery.default”)。在一个路径中在一行的两个或更多的正或反斜杠参照一个网络路径。例如,根目录 c:/ 和一个子目录/windows/system的一个简单的连接将产生 c://windows/system (两个斜杠在一起),这参照的是在叫 windows 的那台机器上的叫 system 的挂装点(而 c:/ 被忽略),这并不等价于 c:/windows/system,它描述的是在当前计算机上的一个目录。应使用 file join 命令来连接路径的成员。
 
- Windows NT
 - 在尝试执行一个应用时,exec
      首先查找指定的那个名字。接着按
      .com、 .exe, 和 .bat
      的次序把它们添加到指定的名字的后面并查找这个加长了的名字。如果没有指定一个目录名作为应用(程序)名的一部分,在尝试定位应用(程序)时,依次在下列目录中自动查找:
    
 
装载 Tcl
  可执行文件的目录。
 
当前目录
 
Windows NT 32位系统目录。
 
Windows NT 16位系统目录。
 
Windows NT 主目录。
 
在 path 中列出的目录。
- Windows 95
 - 在尝试执行一个应用时,exec首先查找指定的那个名字。接着按
      .com、 .exe, 和 .bat
      的次序把它们添加到指定的名字的后面并查找这个加长了的名字。如果没有指定一个目录名作为应用(程序)名的一部分,在尝试定位应用(程序)时,依次在下列目录中自动查找:
    
 
装载 Tcl
  可执行文件的目录。
 
当前目录。
 
Windows 95 系统目录。
 
Windows 95 主目录。
 
在 path 中列出的目录。
- Macintosh
 - 在 Macintosh 下 exec 命令未被实现而不存在。
 
- Unix
 - 
    
exec 命令是全功能的并象上面描述的那样工作。 
参见 SEE ALSO¶
error(n), open(n)关键字 KEYWORDS¶
execute, pipeline, redirection, subprocess[中文版维护人]¶
寒蝉退士[中文版最新更新]¶
2001/07/11《中国 Linux 论坛 man 手册页翻译计划》:¶
http://cmpp.linuxforum.net| 7.6 | Tcl |