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


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

版權所有 © 2014 tutorialspoint



  首頁     參考     討論論壇     關於 TP  

faccessat() - Unix,Linux 系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

faccessat - 更改相對於目錄檔案描述符的檔案的許可權

語法

#include <unistd.h> 

int faccessat(int dirfd, const char *path, int mode ", int " flags );

描述

faccessat() 系統呼叫與 access(2) 的操作方式完全相同,除了本手冊頁中描述的區別。

如果在 path 中給出的路徑名是相對路徑,則它將相對於檔案描述符 dirfd 所引用的目錄進行解釋(而不是相對於呼叫程序的當前工作目錄,access(2) 對相對路徑名就是這樣做的)。

如果在 path 中給出的路徑名是相對路徑,並且 dirfd 是特殊值 AT_FDCWD,則 path 將相對於呼叫程序的當前工作目錄進行解釋(就像 access(2) 一樣)。

如果在 path 中給出的路徑名是絕對路徑,則忽略 dirfd

flags 透過將以下一個或多個值進行 OR 運算來構造

程式碼描述
AT_EACCESS
 使用有效的使用者和組 ID 執行訪問檢查。預設情況下,faccessat() 使用有效 ID(如 access(2))。
AT_SYMLINK_NOFOLLOW
 如果 path 是符號連結,則不要取消引用它:而是返回有關連結本身的資訊。

返回值

成功時,faccessat() 返回 0。發生錯誤時,返回 -1,並且 errno 被設定為指示錯誤。

錯誤

access(2) 中發生的相同錯誤也可能發生在 faccessat() 中。以下附加錯誤可能發生在 faccessat() 中

標籤描述
EBADF dirfd 不是有效的檔案描述符。
EINVAL flags 中指定了無效的標誌。
ENOTDIR path 是相對路徑,並且 dirfd 是一個檔案描述符,它引用的是除目錄之外的檔案。

備註

請參閱 openat(2) 以瞭解 faccessat() 的必要性。

符合標準

此係統呼叫是非標準的,但建議將其包含在 POSIX.1 的未來修訂版中。

GLIBC 備註

AT_EACCESSAT_SYMLINK_NOFOLLOW 標誌實際上是在 faccessat() 的 glibc 包裝函式中實現的。如果指定了這兩個標誌中的任何一個,則包裝函式將使用 fstatat(2) 來確定訪問許可權。

版本

faccessat() 在 Linux 核心 2.6.16 中新增。

參見



previous next Printer Friendly

廣告


  

廣告



廣告
© . All rights reserved.