_chmod
, _wchmod
Ändert die Dateiberechtigungseinstellungen.
Syntax
int _chmod( const char *filename, int pmode );
int _wchmod( const wchar_t *filename, int pmode );
Parameter
filename
Name der vorhandenen Datei.
pmode
Berechtigungseinstellung für die Datei.
Rückgabewert
Diese Funktionen geben 0 zurück, wenn die Berechtigungseinstellung erfolgreich geändert wurde. Ein Rückgabewert von -1 gibt einen Fehler an. Wenn die angegebene Datei nicht gefunden werden konnte, errno
wird auf ENOENT
; wenn ein Parameter ungültig ist, errno
auf .EINVAL
Hinweise
Die _chmod
Funktion ändert die Berechtigungseinstellung der durch filename
. Die Berechtigungseinstellung steuert den Lese- und Schreibzugriff auf die Datei. Der ganzzahlige Ausdruck pmode
enthält eine oder beide der folgenden Manifestkonstanten, die in SYS\Stat.h definiert sind.
pmode |
Bedeutung |
---|---|
_S_IREAD |
Nur Lesen zugelassen. |
_S_IWRITE |
Schreiben erlaubt. (Lässt tatsächlich Lesen und Schreiben zu.) |
_S_IREAD | _S_IWRITE |
Lesen und Schreiben erlaubt. |
Wenn beide Konstanten angegeben werden, werden sie mit dem bitweisen operator (|
) verknüpft. Wenn keine Schreibberechtigung erteilt wird, ist die Datei schreibgeschützt. Beachten Sie, dass alle Dateien immer lesbar sind; Es ist nicht möglich, schreibgeschützte Berechtigungen zu erteilen. Deshalb sind die Modi _S_IWRITE
und _S_IREAD | _S_IWRITE
gleichwertig.
_wchmod
ist eine Breitzeichenversion von _chmod
. Das filename
-Argument für _wchmod
ist eine Breitzeichenfolge. _wchmod
und _chmod
verhalten sich andernfalls identisch.
Diese Funktion überprüft ihre Parameter. Wenn pmode
es sich nicht um eine Kombination aus einer der Manifestkonstanten handelt oder einen alternativen Satz von Konstanten enthält, ignoriert die Funktion sie einfach. Wenn filename
den Wert NULL
annimmt, wird der Handler für ungültige Parameter aufgerufen, wie in Parameter Validation. Wenn die weitere Ausführung zugelassen wird, wird errno
auf EINVAL
gesetzt, und die Funktion gibt – 1 zurück.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern finden Sie im Global state in the CRT.
Mapping generischer Textroutinen
Tchar.h-Routine | _UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tchmod |
_chmod |
_chmod |
_wchmod |
Anforderungen
Routine | Erforderlicher Header | Optionaler Header |
---|---|---|
_chmod |
<io.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
_wchmod |
<io.h> oder <wchar.h> | <sys/types.h>, <sys/stat.h>, <errno.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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
Siehe auch
Dateibehandlung
_access
, _waccess
_creat
, _wcreat
_fstat
, , _fstat32
_fstat64
, _fstati64
, , _fstat32i64
_fstat64i32
_open
, _wopen
_stat
, _wstat
Funktionen