_chmod, _wchmod

Změní nastavení oprávnění k souboru.

Syntaxe

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

Parametry

filename
Název existujícího souboru

pmode
Nastavení oprávnění pro soubor

Vrácená hodnota

Pokud se nastavení oprávnění úspěšně změní, vrátí tyto funkce hodnotu 0. Vrácená hodnota -1 označuje selhání. Pokud zadaný soubor nebyl nalezen, errno je nastaven na ENOENThodnotu ; pokud je parametr neplatný, errno je nastaven na EINVALhodnotu .

Poznámky

Funkce _chmod změní nastavení oprávnění souboru určeného parametrem filename. Nastavení oprávnění řídí přístup pro čtení a zápis k souboru. Celočíselné výraz pmode obsahuje jednu nebo obě následující konstanty manifestu definované v sys\Stat.h.

pmode Význam
_S_IREAD Je povoleno pouze čtení.
_S_IWRITE Zápis je povolený. (Ve skutečnosti povoluje čtení a zápis.)
_S_IREAD | _S_IWRITE Čtení a psaní je povoleno.

Když jsou obě konstanty zadané, spojí se s bitovým operátorem nebo operátorem (|). Pokud oprávnění k zápisu není uděleno, soubor je jen pro čtení. Všimněte si, že všechny soubory jsou vždy čitelné; Oprávnění jen pro zápis není možné udělit. Režimy _S_IWRITE a _S_IREAD | _S_IWRITE jsou tedy ekvivalentní.

_wchmodje verze širokého znaku _chmodfilename ; argument je _wchmod řetězec širokého znaku. _wchmod a _chmod chovat se stejně jinak.

Tato funkce ověří své parametry. Pokud pmode není kombinací jedné z konstant manifestu nebo zahrnuje alternativní sadu konstant, funkce je jednoduše ignoruje. Pokud filename je NULL, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, errno je nastaveno na EINVAL hodnotu a funkce vrátí hodnotu -1.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Pokud ho chcete změnit, přečtěte si téma Globální stav v CRT.

Mapování rutin obecného textu

Rutina Tchar.h _UNICODE a _MBCS není definován _MBCS definovaný _UNICODE definovaný
_tchmod _chmod _chmod _wchmod

Požadavky

Rutina Požadovaný hlavičkový soubor Volitelné záhlaví
_chmod <io.h> <sys/types.h>, <sys/stat.h>, <errno.h>
_wchmod <io.h> nebo <wchar.h> <sys/types.h>, <sys/stat.h>, <errno.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

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

Viz také

Zpracování souborů
_access, _waccess
_creat, _wcreat
_fstat, _fstat32, _fstat64, _fstati64, , _fstat32i64_fstat64i32
_open, _wopen
_stat, _wstat funkce