Aracılığıyla paylaş


_chmod, _wchmod

Dosya izni ayarlarını değiştirir.

Sözdizimi

int _chmod( const char *filename, int pmode );
int _wchmod( const wchar_t *filename, int pmode );

Parametreler

filename
Var olan dosyanın adı.

pmode
Dosya için izin ayarı.

Dönüş değeri

İzin ayarı başarıyla değiştirilirse bu işlevler 0 döndürür. -1 dönüş değeri hataya işaret eder. Belirtilen dosya bulunamadıysa olarak errno ayarlanır ENOENT; parametre geçersizse olarak errno ayarlanır EINVAL.

Açıklamalar

İşlev, _chmod tarafından filenamebelirtilen dosyanın izin ayarını değiştirir. İzin ayarı, dosyaya okuma ve yazma erişimini denetler. Tamsayı ifadesi pmode , SYS\Stat.h içinde tanımlanan aşağıdaki bildirim sabitlerinden birini veya her ikisini içerir.

pmode Anlamı
_S_IREAD Yalnızca okuma izni verilir.
_S_IWRITE Yazma izni verilir. (Aslında, okuma ve yazma izin verir.)
_S_IREAD | _S_IWRITE Okuma ve yazma izin verilir.

Her iki sabit de verildiğinde bit düzeyinde veya işleciyle (|) birleştirilir. Yazma izni verilmezse, dosya salt okunurdur. Tüm dosyaların her zaman okunabilir olduğunu unutmayın; yalnızca yazma izni vermek mümkün değildir. Bu nedenle, ve _S_IREAD | _S_IWRITE modları _S_IWRITE eşdeğerdir.

_wchmod , öğesinin _chmodgeniş karakterli bir sürümüdür; filename bağımsız değişkeni _wchmod geniş karakterli bir dizedir. _wchmod ve _chmod aksi takdirde aynı şekilde davran.

Bu işlev parametrelerini doğrular. Bildirim sabitlerinden birinin birleşimi değilse veya alternatif bir sabit kümesine sahipse pmode işlev bunları yoksayar. ise filenameNULL, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, errno olarak ayarlanır EINVAL ve işlevi -1 döndürür.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bunu değiştirmek için bkz . CRT'de Genel durum.

Genel metin yordamı eşlemeleri

Tchar.h yordamı _UNICODE ve _MBCS tanımlanmadı _MBCS Tanımlanan _UNICODE Tanımlanan
_tchmod _chmod _chmod _wchmod

Gereksinimler

Yordam Gerekli başlık İsteğe bağlı üst bilgi
_chmod <io.h> <sys/types.h>, <sys/stat.h>, <errno.h>
_wchmod <io.h> veya <wchar.h> <sys/types.h>, <sys/stat.h>, <errno.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

// 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

Ayrıca bkz.

Dosya işleme
_access, _waccess
_creat, _wcreat
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_open, _wopen
_stat, _wstat işlevler