Manpages

NAME 名 字

close - 关 闭 一 个 文 件 描 述 符

SYNOPSIS 总 览

#include <unistd.h>

int close(int fd);

DESCRIPTION 描 述

close 关 闭 一 个 文 件 描 述 符 , 使 它 不 在 指 向 任 何 文 件 和 可 以 在 新 的 文 件 操 作 中 被 再 次 使 用 . 任 何 与 此 文 件 相 关 联 的 以 及 程 序 所 拥 有 的 锁 , 都 会 被 删 除 (忽 略 那 些 持 有 锁 的 文 件 描 述 符 ) 假 如 fd 是 最 后 一 个 文 件 描 述 符 与 此 资 源 相 关 联 , 则 这 个 资 源 将 被 释 放 . 若 此 描 述 符 是 最 后 一 个 引 用 到 此 文 件 上 的 , 则 文 件 将 使 用 unlink(2) 删 除 .

RETURN VALUE 返 回 值

close 返 回 0 表 示 成 功 , 或 者 -1 表 示 有 错 误 发 生 .

ERRORS 错 误 信 息

EBADF

fd 不 是 一 个 有 效 的 已 被 打 开 的 文 件 的 描 述 符

EINTR

The close() 调 用 被 一 信 号 中 断 .

EIO

I/O 有 错 误 发 生

CONFORMING TO

SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4 documents an additional ENOLINK error condition.

NOTES 注 意

通 常 不 检 测 返 回 值 , 除 了 发 生 严 重 的 程 序 错 误 . 文 件 系 统 使 用 了 "write-behind" 的 技 术 提 高 了 执 行 write(2) 时 的 性 能 . 即 使 还 没 有 被 写 , 写 操 作 也 会 成 功 . 错 误 信 息 在 写 操 作 以 后 报 告 , 但 是 这 保 证 在 关 闭 文 件 时 报 告 . 在 关 闭 文 件 时 不 检 测 返 回 值 可 能 会 导 致 数 据 的 丢 失 . 这 一 点 在 NFS 和 磁 盘 配 额 上 比 较 明 显 . 由 于 内 核 会 延 迟 写 , 所 以 就 算 成 功 关 闭 一 个 文 件 不 能 保 证 数 据 被 成 功 的 写 到 磁 盘 上 . 当 文 件 流 关 闭 时 , 对 文 件 系 统 来 说 一 般 不 去 刷 新 缓 冲 区 . 如 果 你 要 保 证 数 据 写 入 磁 盘 等 物 理 存 贮 器 中 就 使 用 fsync(2)sync(2), 他 们 会 做 到 你 想 做 的 (对 于 这 一 点 要 依 赖 于 磁 盘 设 备 ).

SEE ALSO 参 考

open(2), fcntl(2), shutdown(2), unlink(2), fclose(3)

[中 文 维 护 ]

Daniel (badlong [AT] 163.com)

[中 文 更 新 ]

2002/1/10

[说 明 ]

若 发 现 错 误 或 不 足 请 与 我 联 系 ..SH "跋 " 本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh