Compartir a través de


_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, 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