______________________________________________________________________________
NAME
exec - 调 用 子 进 程
总 览 SYNOPSIS
exec ?switches? arg ?arg ...? _________________________________________________________________
描 述 DESCRIPTION
这 个 命 令 把 它 的 参 数 作 为 对 要 执 行 的 一 个 或 多 个 子 进 程 的 指 定 来 对 待 。 参 数 接 受 标 准 的 shell 管 道 的 格 式 (form), 即 每 个 arg 都 变 成 某 个 命 令 的 一 个 字 , 并 且 每 个 不 同 的 命 令 都 变 成 一 个 子 进 程 。 如 果 给 exec的 初 始 的 参 数 以 - 开 始 , 则 它 们 被 作 为 命 令 行 开 关 而 不 是 管 道 指 定 的 一 部 分 来 对 待 。 当 前 支 持 下 列 开 关 :
-keepnewline 在 管 道 的 输 出 中 保 持 尾 随 的 换 行 符 。 通 常 要 删 除 尾 随 的 换 行 符 。 | |
-- 标 志 开 关 |
(部 分 )的 结 束 。 此 后 的 参 数 即 使 以 -开 头 仍 被 作 为 第 一 个 arg 来 对 待 。 如 果 一 个 arg (或 成 对 的 arg)有 象 下 面 描 述 的 格 式 个 某 一 种 , 则 exec 用 它 来 控 制 子 进 程 间 的 输 入 和 输 出 流 (flow)。 将 不 把 这 样 的 参 数 传 递 给 子 进 程 。 在 象 “< fileName”这 样 的 格 式 中 fileName 可 以 要 么 是 一 个 与 “<”分 离 的 参 数 , 要 么 是 在 同 一 个 参 数 中 而 没 有 间 隔 的 空 格 (例 如 “<fileName”)。
| 分 隔 在 管 道 中 不 同 的 命 令 。 前 面 的 命 令 的 标 准 输 出 将 被 输 送 给 后 面 命 令 的 标 准 输 入 中 。 | |
|& 分 隔 在 管 道 中 不 同 的 命 令 。 前 面 命 令 的 标 准 输 出 和 标 准 错 误 输 出 都 被 输 送 到 后 面 的 标 准 输 入 中 。 这 种 重 定 向 格 式 取 代 象 |
2> 和 >& 这 样 的 格 式 。
< fileName 打 开 由 |
fileName 指 名 的 文 件 并 作 为 在 管 道 中 的 第 一 个 命 令 的 标 |
准 输 入 来 使 用 。
<@ fileId |
FileId 必 须 是 一 个 打 开 了 的 文 件 的 标 识 符 , 比 如 是 从 以 前 的 open 调 用 的 返 回 值 。 作 为 在 管 道 中 的 第 一 个 命 令 的 标 准 输 入 来 使 用 。 FileId 必 须 用 读 模 式 来 打 开 。 | ||||||||||||||||||||||||||
<< value |
Value 被 传 递 给 第 一 个 命 令 来 作 为 它 的 标 准 输 入 。
最 后 的 命 令 的 标 准 输 出 被 重 定 向 到 叫 fileName 的 文 件 中 , 覆 盖 它 以 前 的 内 容 。
把 管 道 中 所 有 命 令 的 标 准 错 误 输 出 重 定 向 到 叫 fileName 的 文 件 中 , 覆 盖 它 以 前 的 内 容 。
最 后 的 命 令 的 标 准 输 出 和 所 有 命 令 的 标 准 错 误 输 出 都 被 重 定 向 到 叫 fileName的 文 件 中 , 覆 盖 它 以 前 的 内 容 。
的 命 令 的 标 准 输 出 被 重 定 向 到 叫 fileName 的 文 件 中 , 对 它 进 行 添 加 而 不 是 覆 盖 它 。
在 管 道 中 的 所 有 的 命 令 的 标 准 错 误 输 出 都 被 重 定 向 到 叫 fileName的 文 件 中 , 对 它 进 行 添 加 而 不 是 覆 盖 它 。
最 后 的
命 令 的 标 准 输
出 和 所 有 命 令
的 标 准 错 误 输
出 被 重 定 向 到
叫 fileName 的 文 件 中
, 对 它 进 行 添
加 而 不 是 覆 盖
它 。 FileId 必 须 是 一 个 打 开 了 的 文 件 的 标 识 符 , 比 如 是 从 以 前 的 open调 用 的 返 回 值 。 最 后 的 命 令 的 标 准 输 出 被 重 定 向 到 fileId(指 定 )的 文 件 中 。 文 件 必 须 用 读 模 式 来 打 开 。 2>@ fileId FileId 必 须 是 一 个 打 开 了 的 文 件 的 标 识 符 , 比 如 是 从 以 前 的 open调 用 的 返 回 值 。 在 管 道 中 的 所 有 命 令 的 标 准 错 误 输 出 都 被 重 定 向 到 fileId(指 定 )的 文 件 中 。 文 件 必 须 用 写 模 式 来 打 开 。 > &@ fileId FileId 必 须 是 一 个 打 开 了 的 文 件 的 标 识 符 , 比 如 是 从 以 前 的 open调 用 的 返 回 值 。 最 后 的 命 令 的 标 准 输 出 和 所 有 命 令 的 标 准 错 误 输 出 被 重 定 向 到 fileId(指 定 )的 文 件 中 。 文 件 必 须 用 写 模 式 来 打 开 。 如 果 标 准 输 出 没 有 被 重 定 向 , 则 exec 命 令 返 回 在 管 道 中 最 后 的 命 令 的 标 准 输 出 。 如 果 在 管 道 中 的 任 何 命 令 不 正 常 退 出 或 被 杀 死 或 被 挂 起 , 则 exec 将 返 回 一 个 错 误 和 并 且 错 误 信 息 将 包 含 管 道 的 输 出 和 随 后 的 描 述 不 正 常 终 止 的 错 误 信 息 ; errorCode 变 量 将 包 括 关 于 最 近 所 遭 遇 的 不 正 常 终 止 的 额 外 的 信 息 。 如 果 任 何 命 令 写 它 的 标 准 错 误 文 件 而 这 个 标 准 错 误 未 被 重 定 向 , 则 exec 将 返 回 一 个 错 误 ; 错 误 消 息 将 包 含 管 道 的 标 准 输 出 , 跟 着 是 关 于 不 正 常 终 止 的 信 息 (如 果 有 的 话 ), 随 后 是 标 准 错 误 输 出 。 如 果 结 果 或 错 误 信 息 的 最 后 的 字 符 是 一 个 换 行 符 , 则 这 个 换 行 符 通 常 被 从 结 果 或 错 误 信 息 中 删 除 。 这 是 与 其 他 Tcl 返 回 值 相 一 致 的 , 它 们 通 常 不 用 换 行 (作 为 )结 束 。 但 是 , 如 果 指 定 了 -keepnewline则 保 持 尾 随 的 换 行 符 。 如 果 标 准 输 入 未 使 用 “<” 、 “<<” 或 “<@” 来 重 定 向 , 则 把 应 用 的 当 前 的 标 准 输 入 作 为 第 一 个 命 令 的 标 准 输 入 。 如 果 最 后 的 arg 是 “&”, 则 管 道 将 在 后 台 执 行 。 在 这 种 情 况 下 exec命 令 将 返 回 一 个 列 表 , 列 表 的 元 素 是 在 管 道 中 所 有 子 进 程 的 进 程 标 识 符 。 如 果 在 管 道 中 最 后 的 命 令 的 标 准 输 出 未 被 重 定 向 , 则 输 出 到 应 用 的 标 准 输 出 中 , 并 且 如 果 管 道 中 所 有 的 命 令 的 错 误 输 出 未 被 重 定 向 , 则 错 误 输 出 到 应 用 的 标 准 错 误 中 。 每 个 命 令 中 的 第 一 个 字 被 接 受 为 命 令 的 名 字 ; 在 它 上 面 进 行 “~”(tilde)替 换 , 如 果 结 果 不 包 含 斜 杠 , 则 在 PATH 环 境 变 量 中 的 目 录 里 查 找 给 定 名 字 的 可 执 行 文 件 。 如 果 名 字 包 含 斜 杠 , 则 它 必 须 参 照 一 个 从 当 前 目 录 可 到 达 的 可 执 行 文 件 。 在 给 命 令 的 参 数 上 不 进 行 通 配 符 (glob) 扩 展 或 其 他 的 shell 式 的 替 换 。 移 植 要 点 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 95 │ 在 尝 试 执 行 一 个 应 用 时 , exec首 先 查 找 指 定 的 那 个 名 字 。 接 着 按 .com、 │ .exe, 和 .bat 的 次 序 把 它 们 添 加 到 指 定 的 名 字 的 后 面 并 查 找 这 个 加 长 了 │ 的 名 字 。 如 果 没 有 指 定 一 个 目 录 名 作 为 应 用 (程 序 )名 的 一 部 分 , 在 尝 试 定 │ 位 应 用 (程 序 )时 , 依 次 在 下 列 目 录 中 自 动 查 找 : │ 装 载 Tcl 可 执 行 文 件 的 目 录 。 │ 当 前 目 录 。 │ Windows 95 系 统
目 录 。 │ NUL: </B> 设 备 和 一 个 16位 应 用 程 序 之 间 的 重 定 向 不 总 是 工 作 。 在 从 │ NUL: 重 定 向 时 一 些 应 用 程 序 可 能 挂 起 , 另 一 些 将 得 到 永 无 穷 │ 尽 (infinite)的 “0x01”字 节 流 (stream), 而 有 一 些 实 际 上 将 正 确 的 得 到 立 │ 即 的 文 件 结 束 ; 这 些 行 为 象 是 依 赖 于 编 译 到 应 用 程 序 自 身 中 的 某 些 东 │ 西 。 在 到 NUL:的 重 定 向 大 于 或 等 于 4K 时 , 一 些 应 用 将 挂 │ 起 (hang)。 在 32位 应 用 程 序 中 不 发 生 上 述 问 题 。 │ 所 有 DOS 16位 应 用 程 序 都 是 同 步 运 行 的 。 从 一 个 管 道 到 一 个 16位 DOS │ 应 用 程 序 的 所 有 标 准 输 入 被 搜 集 到 一 个 临 时 文 件 中 ; 在 这 个 16位 DOS 应 │ 用 程 序 开 始 执 行 之 前 , 管 道 的 其 他 端 点 (end)必 须 被 关 闭 。 从 一 个 16位 │ DOS应 用 程 序 到 一 个 管 道 的 所 有 标 准 输 出 或 错 误 输 出 被 搜 集 到 一 个 临 时 文 │ 件 中 ; 在 临 时 文 件 被 重 定 向 到 管 道 的 下 一 个 阶 段 之 前 , 这 个 应 用 程 序 必 须 │ 终 止 。 这 源 于 一 个 针 对 Windows 95在 实 现 管 道 中 的 一 个 缺 陷 的 工 作 项 │ 目 , 也 是 标 准 的 Windows 95 DOS shell 自 身 处 理 管 道 的 方 式 。 │ 特 定 的 应 用 程 序 , 象 command.com , 不 应 该 交 互 的 执 行 。 不 从 标 准 输 入 │ 读 和 向 标 准 输 出 写 , 而 是 直 接 访 问 控 制 台 窗 口 的 应 用 程 序 可 能 会 失 败 , 并 │ 挂 起 Tcl, 如 果 它 们 自 己 的 私 有 控 制 台 窗 口 不 可 使 用 甚 至 可 能 挂 起 系 统 。 │ Macintosh
│ 在 Macintosh 下 exec
命 令 未 被 实 现
而 不 存 在 。
│ exec 命 令 是 全 功 能 的 并 象 上 面 描 述 的 那 样 工 作 。 │ 参 见 SEE ALSO│ 关 键 字 KEYWORDS│ execute, pipeline, redirection, subprocess │ [中 文 版 维 护 人 ]│ 寒 蝉 退 士 │ [中 文 版 最 新 更 新 ]│ 2001/07/11 │ 《 中 国 Linux 论 坛 man 手 册 页 翻 译 计 划 》 :│ 跋│ 本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 │ 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh │ |