Condividi tramite


_chmod, _wchmod

Modifica le impostazioni di autorizzazione file.

Sintassi

int _chmod( const char *filename, int pmode );
int _wchmod( const wchar_t *filename, int pmode );

Parametri

filename
Nome del file esistente.

pmode
Impostazione di autorizzazione per il file.

Valore restituito

Queste funzioni restituiscono 0 se l'impostazione di autorizzazione viene modificata. Il valore restituito -1 indica un errore. Se non è stato possibile trovare il file specificato, errno è impostato su ENOENT. Se un parametro non è valido, errno è impostato su EINVAL.

Osservazioni:

La _chmod funzione modifica l'impostazione di autorizzazione del file specificato da filename. L'impostazione di autorizzazione controlla l'accesso in lettura e scrittura al file. L'espressione Integer pmode contiene una o entrambe le seguenti costanti manifesto, definite in SYS\Stat.h.

pmode significato
_S_IREAD Solo lettura consentita.
_S_IWRITE Scrittura consentita. (In effetti, consente la lettura e la scrittura)
_S_IREAD | _S_IWRITE Lettura e scrittura consentite.

Quando vengono date entrambe le costanti, vengono unite con l'operatore bit per bit o (|). Se non viene concessa l'autorizzazione di scrittura, il file è di sola lettura. Si noti che tutti i file sono sempre leggibili; non è possibile concedere l'autorizzazione di sola scrittura. Di conseguenza, le modalità _S_IWRITE e _S_IREAD | _S_IWRITE sono equivalenti.

_wchmod è una versione a caratteri wide di _chmod; l'argomento filename in _wchmod è una stringa di caratteri wide. In caso contrario,_wchmod e _chmod si comportano in modo identico.

Questa funzione convalida i relativi parametri. Se pmode non è una combinazione di una delle costanti manifesto o incorpora un set alternativo di costanti, la funzione li ignora semplicemente. Se filename è NULL, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, errno viene impostato su EINVAL e la funzione restituisce -1.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificarlo, vedere Stato globale in CRT.

Mapping di routine di testo generico

Routine Tchar.h _UNICODE e _MBCS non definito _MBCS definito _UNICODE definito
_tchmod _chmod _chmod _wchmod

Requisiti

Ciclo Intestazione obbligatoria Intestazione facoltativa
_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>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

// 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

Vedi anche

Gestione dei file
_access, _waccess
_creat, _wcreat
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64_fstat64i32
_open, _wopen
_stat, _wstat funzioni