Compartilhar via


_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