Provided by: manpages-zh_1.5.2-1.1_all bug

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@163.com)

[中文更新]

            2002/1/10

[說明]

            若 發現 錯誤 或 不足 請 與 我 聯系.

                                            1996-04-14                                   CLOSE(2)