Udostępnij za pośrednictwem


_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 ENOENTwartość ; jeśli parametr jest nieprawidłowy, errno jest ustawiony na EINVALwartość .

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ą ; _chmodargument 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 NULLwartość , 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 Zdefiniowane _UNICODE Zdefiniowane
_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