_chmod
, _wchmod
Modifie les paramètres d’autorisation de fichier.
Syntaxe
int _chmod( const char *filename, int pmode );
int _wchmod( const wchar_t *filename, int pmode );
Paramètres
filename
Nom du fichier existant.
pmode
Paramètre d’autorisation pour le fichier.
Valeur retournée
Ces fonctions retournent 0 si le paramètre d’autorisation a été correctement modifié. Une valeur de retour de -1 indique l’échec. Si le fichier spécifié est introuvable, errno
est défini ENOENT
sur ; si un paramètre n’est pas valide, errno
est défini sur EINVAL
.
Notes
La _chmod
fonction modifie le paramètre d’autorisation du fichier spécifié par filename
. Le paramètre d’autorisation contrôle l’accès en lecture et écriture au fichier. L’expression entière pmode
contient l’une des constantes manifestes suivantes (ou les deux), définies dans SYS\Stat.h.
pmode |
Signification |
---|---|
_S_IREAD |
Lecture autorisée uniquement. |
_S_IWRITE |
Écriture autorisée. (En fait, autorise la lecture et l'écriture.) |
_S_IREAD | _S_IWRITE |
Lecture et écriture autorisées. |
Lorsque les deux constantes sont fournies, elles sont jointes au niveau du bit ou de l’opérateur (|
). Si l’autorisation d’écriture n’est pas donnée, le fichier est en lecture seule. Notez que tous les fichiers sont toujours lisibles ; il n’est pas possible d’accorder une autorisation en écriture seule. Ainsi, les modes _S_IWRITE
et _S_IREAD | _S_IWRITE
sont équivalents.
_wchmod
est une version à caractères larges de _chmod
; l'argument filename
de _wchmod
est une chaîne à caractères larges. Sinon,_wchmod
et _chmod
se comportent de la même façon.
Cette fonction valide ses paramètres. S’il pmode
ne s’agit pas d’une combinaison d’une des constantes manifestes ou incorpore un autre ensemble de constantes, la fonction les ignore simplement. Si filename
a la valeur NULL
, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre. Si l’exécution est autorisée à se poursuivre, errno
est défini sur EINVAL
et la fonction retourne -1.
Par défaut, l’état global de cette fonction est limité à l’application. Pour le modifier, consultez l’état global dans le CRT.
Mappages de routines de texte générique
Routine Tchar.h | _UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tchmod |
_chmod |
_chmod |
_wchmod |
Spécifications
Routine | En-tête requis | En-tête facultatif |
---|---|---|
_chmod |
<io.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
_wchmod |
<io.h> ou <wchar.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// 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
Voir aussi
Gestion des fichiers
_access
, _waccess
_creat
, _wcreat
_fstat
, , _fstat32
, _fstati64
_fstat64
, , _fstat32i64
_fstat64i32
_open
, _wopen
_stat
, fonctions _wstat