Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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