_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. Ist filename dies NULLder Fehler, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. 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.

Generische Textroutinzuordnungen

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

Dateiverarbeitung
_access, _waccess
_creat, _wcreat
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_open, _wopen
_stat, _wstat Funktionen