_access, _waccess

Determina se um arquivo é somente leitura ou não. Há versões mais seguras disponíveis, confira _access_s, _waccess_s.

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.

Retornar valor

Cada função retorna 0 se o arquivo tem o modo determinado. A função retorna -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

Essa função verifica apenas se o arquivo e o diretório são somente leitura ou não, ela 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 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âmetros inválido será chamado, 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, consulte Estado global na CRT.

Mapeamentos de rotina 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