_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 ENOENTsur ; 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