Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
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