close - 關閉一個檔案描述符
#include <unistd.h>
int close(int fd);
close 關閉 一個 檔案
描述符 , 使它 不在 指向
任何 檔案 和 可以 在
新的 檔案 操作 中 被
再次 使用. 任何 與 此
檔案 相關聯 的 以及
程式 所 擁有 的 鎖 , 都
會 被 刪除 (忽略 那些
持有 鎖 的 檔案描述符)
假如
fd 是 最後 一個
檔案描述符 與此 資源
相 關聯 , 則 這個 資源
將 被 釋放. 若此 描述符
是 最後 一個 引用 到 此
檔案 上 的 , 則 檔案 將
使用
unlink(2) 刪除.
close 返回 0 表示 成功 ,
或者 -1 表示 有 錯誤
發生 .
- EBADF
-
fd 不是 一個
有效 的 已 被 開啟 的
檔案 的 描述符
- EINTR
- The close() 呼叫 被 一
訊號 中斷.
- EIO
- I/O 有 錯誤 發生
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4 documents an additional ENOLINK error
condition.
通常 不檢測 返回值 ,
除了 發生 嚴重 的 程式
錯誤. 檔案系統 使用 了
"write-behind" 的 技術 提高 了
執行
write(2) 時 的 效能 .
即使 還 沒有 被 寫 ,
寫操作 也會 成功 . 錯誤
資訊 在 寫操作 以後
報告 , 但是 這 保證 在
關閉 檔案 時 報告 . 在
關閉 檔案 時 不檢測
返回值 可能 會 導致
資料 的 丟失 . 這 一點
在 NFS 和 磁碟 配額 上
比較 明顯.
由於 核心 會 延遲 寫 ,
所以 就算 成功 關閉
一個 檔案 不能 保證
資料 被 成功 的 寫到
磁碟 上. 當 檔案流 關閉
時 , 對 檔案系統 來說
一般 不去 重新整理
緩衝區 . 如果 你 要 保證
資料 寫入 磁碟 等 物理
存貯器 中 就 使用
fsync(2) 或
sync(2), 他們 會 做到
你想做的 (對於 這一點
要 依賴於 磁碟 裝置).
open(2),
fcntl(2),
shutdown(2),
unlink(2),
fclose(3)
Daniel (
[email protected])
2002/1/10
若 發現 錯誤 或 不足 請
與 我 聯絡..SH "跋"
本頁面中文版由中文 man
手冊頁計劃提供。
中文 man 手冊頁計劃:
https://github.com/man-pages-zh/manpages-zh