13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

PIPE 信 号 , 如 果 你 还 没 有 完 成 数 据 的 发 送 , 而 另 外 一 端 的 进 程 完 蛋 掉 , 那 么 系 统 就 会 给 你发 送 这 个 信 号 。16.3.2 自 言 自 语IPC 的 另 外 一 个 用 途 就 是 让 你 的 程 序 和 自 己 讲 话 , 就 象 自 言 自 语 一 样 。 实 际 上 , 你 的 进 程通 过 管 道 和 一 个 它 自 己 分 裂 的 拷 贝 讲 话 时 , 它 的 工 作 方 式 和 我 们 上 一 节 里 讲 的 用 管 道 打 开 很类 似 , 只 不 过 是 子 进 程 继 续 执 行 你 的 脚 本 而 不 是 其 他 命 令 。要 想 把 这 个 东 西 提 交 给 open 函 数 , 你 要 使 用 一 个 包 含 负 号 的 伪 命 令 。 所 以 open 的 第 二个 参 数 看 起 来 就 象 "-|" 或 者 "|-", 取 决 于 你 是 想 从 自 己 发 出 数 据 还 是 从 自 己 接 收 数 据 。和 一 个 普 通 的 fork 命 令 一 样 ,open 函 数 在 父 进 程 里 返 回 子 进 程 的 进 程 ID, 而 在 子 进 程里 返 回 0。 另 外 一 个 不 对 称 的 方 面 是 open 命 名 的 文 件 句 柄 名 字 只 在 父 进 程 里 使 用 。 管 道的 子 进 程 端 根 据 实 际 情 况 要 么 是 挂 在 STDIN 上 要 么 是 STDOUT 上 。 也 就 是 说 , 如 果 你用 |- 打 开 一 个 “ 输 出 到 ” 管 道 , 那 么 你 就 可 以 向 你 打 开 的 这 个 文 件 句 柄 写 数 据 , 而 你 的 子 进程 将 在 它 的 STDIN 里 找 到 这 些 数 据 :if (open(TO, "|-")) {print TO $fromparent;}else {$tochild = ;exit;}如 果 你 用 -| 打 开 一 个 “ 来 自 ” 管 道 , 那 么 你 可 以 从 这 个 文 件 句 柄 读 取 数 据 , 而 那 些 数 据 就 是你 的 子 进 程 往 STDOUT 写 的 :if (open(FROM, "-|" )) {$toparent = ;}else {print STDOUT $fromchild;428

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!