_access_s
、 _waccess_s
、、 _taccess_s
确定文件的读取/写入权限。 这些函数的版本是 _access
、_waccess
,具有安全性增强功能,如 CRT 中的安全功能中所述。
有关 _taccess_s
,请参阅 泛型文本函数映射。
语法
errno_t _access_s(
const char *path,
int mode
);
errno_t _waccess_s(
const wchar_t *path,
int mode
);
参数
path
文件或目录路径。
mode
权限设置。
返回值
如果该文件具有给定的模式,则每个函数将返回 0。 如果命名文件不存在或无法以指定模式进行访问,则该函数将返回错误代码。 在这种情况下,该函数从如下集合中返回错误代码,并同时将 errno
设置为相同的值。
errno 值 |
条件 |
---|---|
EACCES |
访问被拒绝。 文件的权限设置不允许指定的访问权限。 |
ENOENT |
未找到文件名或路径。 |
EINVAL |
参数无效。 |
有关详细信息,请参阅errno
, _doserrno
, _sys_errlist
和_sys_nerr
.
注解
与文件一起使用时,_access_s
函数确定指定的文件是否存在,并且可以按 mode
的值指定的方式访问。 与目录一起使用时,_access_s
仅确定指定的目录是否存在。 在 Windows 2000 和更高版本的操作系统中,所有目录都具有读取和写入访问权限。
mode 值 |
文件检查内容 |
---|---|
00 | 仅检查是否存在。 |
02 | 写入权限。 |
04 | 读取权限。 |
06 | 读取和写入权限。 |
读取或写入文件的权限不足以确保文件的打开功能。 例如,如果文件由另一个进程锁定,则即使 _access_s
返回 0,也可能无法对其进行访问。
_waccess_s
是 _access_s
的宽字符版本,其中 _waccess_s
的 path
参数是宽字符串。 除此以外, _waccess_s
和 _access_s
的行为完全相同。
这些函数验证其参数。 如果 path
为 NULL
或 mode
未指定有效模式,则调用无效参数句柄,如参数验证中所述。 如果允许执行继续,则这些功能将 errno
设置为 EINVAL
并返回 EINVAL
。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
泛型文本函数映射
列中的 tchar.h
函数映射到其他列中的函数,具体取决于编译时定义的字符集。
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" );
}
}
File crt_access_s.c exists.
File crt_access_s.c does not have write permission.
另请参阅
文件处理
_access
, _waccess
_chmod
, _wchmod
_fstat
、、_fstat32
_fstat64
、_fstati64
、_fstat32i64
、_fstat64i32
_open
, _wopen
_stat
、_wstat
函数