Compartir vía


_chmod, _wchmod

Cambia la configuración de permisos de archivo.

Sintaxis

int _chmod( const char *filename, int pmode );
int _wchmod( const wchar_t *filename, int pmode );

Parámetros

filename
Nombre del archivo existente.

pmode
Configuración de permisos del archivo.

Valor devuelto

Estas funciones devuelven 0 si la configuración de permisos se ha modificado correctamente. Un valor devuelto de –1 indica error. Si no se encontró el archivo especificado, errno se establece en ENOENT; si un parámetro no es válido, errno se establece en EINVAL.

Comentarios

La _chmod función cambia la configuración de permisos del archivo especificado por filename. La configuración de permisos controla el acceso de lectura y escritura al archivo. La expresión de entero pmode contiene una o las dos constantes del manifiesto siguientes, que se definen en SYS\Stat.h.

pmode Significado
_S_IREAD Solo se permite la lectura.
_S_IWRITE Escritura permitida. (De hecho, se permiten la lectura y escritura).
_S_IREAD | _S_IWRITE Lectura y escritura permitidas.

Cuando se proporcionan ambas constantes, se unen con el operador OR bit a bit (|). Si no se ha concedido el permiso de escritura, el archivo será de solo lectura. Tenga en cuenta que todos los archivos son siempre legibles; es decir, no es posible conceder permisos de solo escritura. Por consiguiente, los modos _S_IWRITE y _S_IREAD | _S_IWRITE son equivalentes.

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

Esta función valida sus parámetros. Si pmode no es una combinación de una de las constantes de manifiesto o incorpora un conjunto alternativo de constantes, la función simplemente las omite. Si filename es NULL, se invoca el controlador de parámetros no válidos, tal y como se describe en Validación de parámetros. Si la ejecución puede continuar, errno se establece en EINVAL y la función devuelve -1.

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

Asignaciones de rutinas de texto genérico

Rutina Tchar.h _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tchmod _chmod _chmod _wchmod

Requisitos

Routine Encabezado necesario Encabezado opcional
_chmod <io.h> <sys/types.h>, <sys/stat.h>, <errno.h>
_wchmod <io.h> o <wchar.h> <sys/types.h>, <sys/stat.h>, <errno.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// crt_chmod.c
// This program uses _chmod to
// change the mode of a file to read-only.
// It then attempts to modify the file.
//

#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

// Change the mode and report error or success
void set_mode_and_report(char * filename, int mask)
{
   // Check for failure
   if( _chmod( filename, mask ) == -1 )
   {
      // Determine cause of failure and report.
      switch (errno)
      {
         case EINVAL:
            fprintf( stderr, "Invalid parameter to chmod.\n");
            break;
         case ENOENT:
            fprintf( stderr, "File %s not found\n", filename );
            break;
         default:
            // Should never be reached
            fprintf( stderr, "Unexpected error in chmod.\n" );
       }
   }
   else
   {
      if (mask == _S_IREAD)
        printf( "Mode set to read-only\n" );
      else if (mask & _S_IWRITE)
        printf( "Mode set to read/write\n" );
   }
   fflush(stderr);
}

int main( void )
{
   // Create or append to a file.
   system( "echo /* End of file */ >> crt_chmod.c_input" );

   // Set file mode to read-only:
   set_mode_and_report("crt_chmod.c_input ", _S_IREAD );

   system( "echo /* End of file */ >> crt_chmod.c_input " );

   // Change back to read/write:
   set_mode_and_report("crt_chmod.c_input ", _S_IWRITE );

   system( "echo /* End of file */ >> crt_chmod.c_input " );
}

A line of text.

      A line of text.Mode set to read-only
Access is denied.
Mode set to read/write

Consulte también

Control de archivos
_access, _waccess
_creat, _wcreat
_fstat, _fstat32, _fstat64, _fstati64, , _fstat32i64, _fstat64i32
_open, _wopen
Funciones _stat, _wstat