_access_s _waccess_s
判斷檔案的讀取/寫入權限。 這是一個版本的_access _waccess中所述的安全性增強功能與安全性功能,則在 CRT 中。
errno_t _access_s(
const char *path,
int mode
);
errno_t _waccess_s(
const wchar_t *path,
int mode
);
參數
path
檔案或目錄的路徑。mode
權限設定。
傳回值
如果檔案中有指定的模式,每個函式會傳回 0。 如果命名的檔案不存在或無法存取指定的模式,則函數會傳回錯誤碼。 在此情況下,函式,如下所示,從集合傳回錯誤碼,還會設定errno為相同的值。
EACCES
存取遭拒。 檔案的權限設定不允許指定的存取。ENOENT
找不到路徑或檔案名稱。EINVAL
不正確的參數。
如需詳細資訊,請參閱 errno、 _doserrno、 _sys_errlist 和 _sys_nerr。
備註
檔案,搭配使用**_access_s函式會判斷指定的檔案是否存在,並可當做存取值所指定的mode。 與目錄一起使用時_access_s**判斷指定的目錄是否存在。 在Windows 2000與稍後操作系統,所有的目錄擁有讀取和寫入存取權限。
模式值 |
檢查檔案 |
---|---|
00 |
只存在。 |
02 |
寫入權限。 |
04 |
讀取權限。 |
06 |
讀取和寫入權限。 |
讀取或寫入檔案的權限不足以確保能夠開啟檔案。 比方說,如果檔案被其他處理程序鎖定,它可能無法存取即使**_access_s**會傳回 0。
_waccess_s寬字元版本的**_access_s**,其中path引數為**_waccess_s是寬字元字串。 否則, _waccess_s和_access_s**運作方式完全相同。
這些函式會驗證它們的參數。 如果path是NULL或mode並未指定有效的模式中,不正確的參數處理常式會叫用,如所述參數驗證。 如果執行,則允許繼續執行,這些函式會設定errno到EINVAL ,並傳回EINVAL。
泛用文字常式對應
Tchar.h 常式 |
_Unicode 之後,未定義的 _MBCS |
定義的 _MBCS |
定義 _unicode 之後 |
---|---|---|---|
_taccess_s |
_access_s |
_access_s |
_waccess_s |
需求
常式 |
所需的標頭 |
選擇性標頭 |
---|---|---|
_access_s |
<io.h> |
<errno.h> |
_waccess_s |
<wchar.h> 或者 <io.h> |
<errno.h> |
範例
這個範例會使用**_access_s**檢查名為 crt_access_s.c,以查看是否存在及是否允許寫入的檔案。
// crt_access_s.c
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
errno_t err = 0;
// Check for existence.
if ((err = _access_s( "crt_access_s.c", 0 )) == 0 )
{
printf_s( "File crt_access_s.c exists.\n" );
// Check for write permission.
if ((err = _access_s( "crt_access_s.c", 2 )) == 0 )
{
printf_s( "File crt_access_s.c does have "
"write permission.\n" );
}
else
{
printf_s( "File crt_access_s.c does not have "
"write permission.\n" );
}
}
else
{
printf_s( "File crt_access_s.c does not exist.\n" );
}
}
.NET Framework 對等用法
請參閱
參考
_fstat、 _fstat32、 _fstat64、 _fstati64、 _fstat32i64、 _fstat64i32