unlink() - Unix,Linux 系統呼叫 - 技術教學
Tutorials Point


  Unix 初學者指南
  Unix Shell 程式設計
  高階 Unix
  Unix 有用參考
  Unix 有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考     討論論壇     關於 TP  

unlink() - Unix,Linux 系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

unlink - 刪除名稱,並可能刪除其引用的檔案

語法

#include <unistd.h> 

int unlink(const char *pathname);

描述

unlink() 從檔案系統中刪除一個名稱。如果該名稱是檔案的最後一個連結,並且沒有程序開啟該檔案,則該檔案將被刪除,並且其使用的空間將可供重用。

如果該名稱是檔案的最後一個連結,但任何程序仍然打開了該檔案,則該檔案將繼續存在,直到引用它的最後一個檔案描述符關閉。

如果該名稱引用符號連結,則該連結將被刪除。如果該名稱引用套接字、FIFO 或裝置,則將刪除其名稱,但已開啟該物件的程序可能會繼續使用它。

返回值

成功時,返回零。發生錯誤時,返回 -1,並且 errno 被相應地設定。

錯誤

標籤描述
EACCES 程序的有效 UID 不允許寫入包含 pathname 的目錄,或者 pathname 中的一個或多個目錄不允許搜尋許可權。(另請參閱 path_resolution(2)。)
EBUSY(Linux 上沒有)無法解除連結檔案 pathname,因為它正在被系統或另一個程序使用,並且實現認為這是一個錯誤。
EFAULT pathname 指向您可訪問的地址空間之外。
EIO 發生 I/O 錯誤。
EISDIR pathname 指向一個目錄。(這是 Linux 自 2.1.132 以來返回的非 POSIX 值。)
ELOOP 在轉換 pathname 時遇到太多符號連結。
ENAMETOOLONG pathname 太長。
ENOENT pathname 中的一個元件不存在或是一個懸掛的符號連結,或者 pathname 為空。
ENOMEM 核心記憶體不足。
ENOTDIR pathname 中用作目錄的一個元件實際上不是目錄。
EPERM 系統不允許解除連結目錄,或者解除連結目錄需要當前程序不具備的特權。(這是 POSIX 規定的錯誤返回;如上所述,Linux 在此情況下返回 EISDIR。)
EPERM(僅限 Linux)檔案系統不允許解除連結檔案。
EPERMEACCES包含 pathname 的目錄設定了粘滯位(S_ISVTX),並且程序的有效 UID 既不是要刪除的檔案的 UID,也不是包含它的目錄的 UID,並且程序沒有特權(Linux:沒有 CAP_FOWNER 功能)。
EROFS pathname 指向只讀檔案系統上的檔案。

符合標準

SVr4、4.3BSD、POSIX.1-2001。

錯誤

NFS 底層協議中的缺陷會導致仍在使用的檔案意外消失。

參見



previous next Printer Friendly

廣告


  

廣告



廣告