_chmod
, _wchmod
Zmienia ustawienia uprawnień do pliku.
Składnia
int _chmod( const char *filename, int pmode );
int _wchmod( const wchar_t *filename, int pmode );
Parametry
filename
Nazwa istniejącego pliku.
pmode
Ustawienie uprawnień dla pliku.
Wartość zwracana
Te funkcje zwracają wartość 0, jeśli ustawienie uprawnień zostało pomyślnie zmienione. Wartość zwracana -1 wskazuje błąd. Jeśli nie można odnaleźć określonego pliku, errno
jest ustawiona na ENOENT
wartość ; jeśli parametr jest nieprawidłowy, errno
jest ustawiony na EINVAL
wartość .
Uwagi
Funkcja _chmod
zmienia ustawienie uprawnień pliku określonego przez filename
. Ustawienie uprawnień kontroluje dostęp do odczytu i zapisu do pliku. Wyrażenie pmode
całkowite zawiera jedną lub obie następujące stałe manifestu zdefiniowane w pliku SYS\Stat.h.
pmode |
Znaczenie |
---|---|
_S_IREAD |
Dozwolone jest tylko odczytywanie. |
_S_IWRITE |
Dozwolone pisanie. (W efekcie zezwala na odczytywanie i zapisywanie). |
_S_IREAD | _S_IWRITE |
Dozwolone jest odczytywanie i zapisywanie. |
Gdy obie stałe są podane, są one łączone z bitowym lub operatorem (|
). Jeśli nie podano uprawnień do zapisu, plik jest tylko do odczytu. Należy pamiętać, że wszystkie pliki są zawsze czytelne; Nie można nadać uprawnień tylko do zapisu. W związku z tym tryby _S_IWRITE
i _S_IREAD | _S_IWRITE
są równoważne.
_wchmod
jest wersją szerokoznakową ; _chmod
argument to filename
_wchmod
ciąg o szerokim znaku. _wchmod
i _chmod
zachowywać się identycznie inaczej.
Ta funkcja weryfikuje jego parametry. Jeśli pmode
nie jest kombinacją jednej z stałych manifestu lub zawiera alternatywny zestaw stałych, funkcja po prostu je ignoruje. Jeśli filename
parametr ma NULL
wartość , wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, jest ustawione na EINVAL
, errno
a funkcja zwraca wartość -1.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby go zmienić, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
Procedura tchar.h | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tchmod |
_chmod |
_chmod |
_wchmod |
Wymagania
Procedura | Wymagany nagłówek | Opcjonalny nagłówek |
---|---|---|
_chmod |
<io.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
_wchmod |
<io.h> lub <wchar.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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
Zobacz też
Obsługa plików
_access
, _waccess
_creat
, _wcreat
_fstat
, , _fstat32
, _fstat64
, _fstati64
, , _fstat32i64
_fstat64i32
_open
, _wopen
_stat
, _wstat
funkcje