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