_access, _waccess

Determina si un archivo es de solo lectura o no. Existen versiones más seguras; vea _access_s, _waccess_s.

Sintaxis

int _access(
   const char *path,
   int mode
);
int _waccess(
   const wchar_t *path,
   int mode
);

Parámetros

path
Ruta de acceso del directorio o archivo.

mode
Atributo de lectura y escritura.

Valor devuelto

Cada función devuelve 0 si el archivo tiene el modo especificado. La función devuelve -1 si el archivo con nombre no existe o no tiene el modo especificado; en este caso, errno se establece como se muestra en la tabla siguiente.

Valor Descripción
EACCES Acceso denegado: la configuración de permisos del archivo no permite el acceso especificado.
ENOENT No se encuentra el nombre o la ruta de acceso del archivo.
EINVAL El parámetro no es válido.

Para obtener más información sobre estos y otros códigos de retorno, vea errno, _doserrno, _sys_errlist y _sys_nerr.

Comentarios

Cuando se usa con archivos, la función _access determina si el archivo o el directorio especificado existe y si tiene los atributos que especifica el valor de mode. Cuando se usa con directorios, _access solo determina si existe el directorio especificado; en Windows 2000 y sistemas operativos posteriores, todos los directorios tienen acceso de lectura y escritura.

Valor de mode Comprueba el archivo para
00 Solo existencia
02 Solo escritura
04 Solo lectura
06 Lectura y escritura

Esta función solo comprueba si el archivo y el directorio son de solo lectura o no, no comprueba la configuración de seguridad del sistema de archivos. Para eso necesita un token de acceso. Para obtener más información sobre la seguridad del sistema de archivos, consulte Tokens de acceso. Existe una clase ATL que proporciona esta funcionalidad; consulte Clase CAccessToken.

_waccess es una versión con caracteres anchos de _access; el argumento path para _waccess es una cadena de caracteres anchos. Por lo demás,_waccess y _access se comportan de forma idéntica.

Esta función valida sus parámetros. Si path es NULL o mode no especifica un modo válido, se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, la función establece errno en EINVAL y devuelve -1.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina Tchar.h _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_taccess _access _access _waccess

Requisitos

Routine Encabezado necesario Encabezados opcionales
_access <io.h> <errno.h>
_waccess <wchar.h> o <io.h> <errno.h>

Ejemplo

En este ejemplo se usa _access para comprobar el archivo denominado crt_ACCESS.C, para ver si existe y si se permite la escritura.

// 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.

Consulte también

Control de archivos
_chmod, _wchmod
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_open, _wopen
Funciones _stat, _wstat