_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的宽字符版本,为 _waccess_s 的 path 参数是宽字符字符串。 否则, _waccess_s 和 _access_s 具有相同的行为。
这些功能验证其参数。 如果 path 是 NULL 或 mode 不指定有效的模式,无效参数调用处理程序,如 参数验证所述。 如果执行允许继续,对 EINVAL 的这些功能集 errno 和返回 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