13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

$DBNAME = "/path/to/database";$LCK = $DBNAME. ".lockfile";# 如 果 你 想 把 数 据 写 到 锁 文 件 里 , 使 用 O_RDWRsysopen(DBLOCK, $LCK, O_RDONLY| O_CREAT)or die "can't open $LCK:$!";# 在 打 开 数 据 库 之 前 必 须 锁 住 文 件flock(DBLOCK, LOCK_SH)or die "can't LOCK_SH $LCK: $!";tie(%hash, "DB_File", $DBNAME, O_RDWR | O_CREAT)or die "can't tie $DBNAME: $!";现 在 你 可 以 安 全 地 对 捆 绑 了 的 %hash 做 任 何 你 想 做 的 处 理 了 。 如 果 你 完 成 了 对 你 的 数 据库 的 处 理 , 那 么 确 保 你 明 确 地 释 放 了 那 些 资 源 , 并 且 是 以 你 请 求 它 们 的 相 反 的 顺 序 :untie %hash;close DBLOCK;# 必 须 在 锁 定 文 件 之 前 关 闭 数 据 库# 现 在 可 以 安 全 地 释 放 锁 了如 果 你 安 装 了 GNU DBM 库 , 你 可 以 使 用 标 准 的 GDBM_File 模 块 的 隐 含 锁 定 。 除 非 最初 的 tie 包 含 GDBM_NOLOCK 标 志 , 否 则 该 库 将 保 证 任 意 时 刻 只 有 一 个 用 户 可 以 写 入GDBM 文 件 , 而 且 读 进 程 和 写 进 程 不 能 让 数 据 库 同 时 处 于 打 开 状 态 。16.2.2 传 递 文 件 句 柄每 当 你 用 fork 创 建 一 个 子 进 程 , 那 个 新 的 进 程 就 从 它 的 父 进 程 继 承 所 有 打 开 了 的 文 件 句柄 。 用 文 件 句 柄 做 进 程 间 通 讯 可 以 很 容 易 先 通 过 使 用 平 面 文 件 来 演 示 。 理 解 文 件 机 制 的 原 理对 于 理 解 本 章 后 面 的 管 道 和 套 接 字 等 更 奇 妙 的 机 制 有 很 大 帮 助 。下 面 这 个 最 简 单 的 例 子 打 开 一 个 文 件 然 后 开 始 一 个 子 进 程 。 然 后 子 进 程 则 使 用 已 经 为 它 打 开了 的 文 件 句 柄 :421

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

Saved successfully!

Ooh no, something went wrong!