_access
, _waccess
, t_access
Determina se um arquivo é somente leitura ou não. Há versões mais seguras disponíveis, confira _access_s
, _waccess_s
.
Para _taccess
, consulte Mapeamentos de função de texto genérico.
Sintaxe
int _access(
const char *path,
int mode
);
int _waccess(
const wchar_t *path,
int mode
);
Parâmetros
path
Caminho do arquivo ou do diretório.
mode
Atributo de leitura/gravação.
Valor retornado
Cada função retorna 0 se o arquivo tem o modo determinado. A função retornará -1 se o arquivo nomeado não existir ou não tiver o modo fornecido; nesse caso, errno
é definido conforme mostrado na tabela a seguir.
Valor | Descrição |
---|---|
EACCES |
Acesso negado: a configuração de permissão do arquivo não permite o acesso especificado. |
ENOENT |
Nome ou caminho do arquivo não encontrado. |
EINVAL |
Parâmetro inválido. |
Para obter mais informações sobre esses e outros códigos de retorno, confira errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Comentários
Quando usado com arquivos, a função _access
determina se o arquivo ou o diretório especificado existe e tem os atributos especificados pelo valor de mode
. Quando usado com diretórios, _access
determina apenas se o diretório especificado existe. No Windows 2000 e nos sistemas operacionais mais recentes, todos os diretórios têm acesso de leitura e gravação.
mode valor |
Verifica o arquivo quanto a |
---|---|
00 | Existência apenas |
02 | Somente gravação |
04 | Somente leitura |
06 | Leitura e gravação |
Esta função verifica apenas se o arquivo e o diretório são somente leitura ou não, não verifica as configurações de segurança do sistema de arquivos. Para isso você precisa de um token de acesso. Para obter mais informações sobre a segurança do sistema de arquivos, consulte Tokens de acesso. Existe uma classe da ATL para fornecer essa funcionalidade, confira Classe CAccessToken
.
A função _waccess
é uma versão de caractere largo da função _access
; o argumento path
para _waccess
é uma cadeia de caracteres larga. Caso contrário, _waccess
e _access
se comportam de forma idêntica.
Essa função valida seus parâmetros. Se path
for NULL
ou mode
não especificar um modo válido, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução puder continuar, a função definirá errno
como EINVAL
e retornará –1.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Mapeamentos de funções de texto genérico
Rotina Tchar.h |
_UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_taccess |
_access |
_access |
_waccess |
Requisitos
Rotina | Cabeçalho necessário | Cabeçalhos opcionais |
---|---|---|
_access |
<io.h> |
<errno.h> |
_waccess |
<wchar.h> ou <io.h> |
<errno.h> |
Exemplo
O exemplo a seguir usa _access
para verificar o arquivo nomeado crt_ACCESS.C
a fim de saber se ele existe e se a gravação é permitida.
// crt_access.c
// compile with: /W1
// This example uses _access to check the file named
// crt_ACCESS.C to see if it exists and if writing is allowed.
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
// Check for existence.
if( (_access( "crt_ACCESS.C", 0 )) != -1 )
{
printf_s( "File crt_ACCESS.C exists.\n" );
// Check for write permission.
// Assume file is read-only.
if( (_access( "crt_ACCESS.C", 2 )) == -1 )
printf_s( "File crt_ACCESS.C does not have write permission.\n" );
}
}
File crt_ACCESS.C exists.
File crt_ACCESS.C does not have write permission.
Confira também
Manipulação de arquivos
_chmod
, _wchmod
_fstat
, _fstat32
, _fstat64
, _fstati64
, _fstat32i64
, , _fstat64i32
_open
, _wopen
_stat
, _wstat
funções