_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