_chmod, _wchmod

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Cambia los valores de los permisos de archivo.

  
      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 para el archivo.

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

Los cambios de función de _chmod 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 ambas de las constantes de manifiesto siguientes, definidos en SYS\Stat.h.

_S_IWRITE
Escribir permitida.

_S_IREAD
Lectura permitida.

_S_IREAD | _S_IWRITE
Lectura y escritura permitidas.

Cuando se dan ambas constantes, se combinan con el operador bit a bit de OR ( | ). Si el permiso de escritura no se especifica, el archivo es de sólo lectura. Observe que todos los archivos siempre son legibles; no es posible asignar el permiso de solo escritura. Así, 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 ni escribir un conjunto alternas de constantes, la función omite simplemente los. 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.

Asignaciones de rutina de texto genérico

Rutina Tchar.h_UNICODE y _MBCS no definidos_MBCS definido_UNICODE definido
_tchmod_chmod_chmod_wchmod
RutinaEncabezado necesarioEncabezado opcional
_chmod<io.h><sistema/types.h, sistema></stat.h, errno.h><>
_wchmod<io.h o> wchar.h <><sistema/types.h, sistema></stat.h, errno.h><>

Para obtener más información de compatibilidad, vea Compatibilidad en la Introducción.

// 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 " );   
}   

Una línea de texto.  Una línea de texto. Modo establecido en readonly
Se denegó el acceso.
Modo establecido en la escritura

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

Mostrar: