Bagikan melalui


_chmod, _wchmod

Mengubah pengaturan izin file.

Sintaks

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

Parameter

filename
Nama file yang ada.

pmode
Pengaturan izin untuk file.

Nilai hasil

Fungsi-fungsi ini mengembalikan 0 jika pengaturan izin berhasil diubah. Nilai pengembalian -1 menunjukkan kegagalan. Jika file yang ditentukan tidak dapat ditemukan, errno diatur ke ENOENT; jika parameter tidak valid, errno diatur ke EINVAL.

Keterangan

Fungsi mengubah _chmod pengaturan izin file yang ditentukan oleh filename. Pengaturan izin mengontrol akses baca dan tulis ke file. Ekspresi pmode bilangan bulat berisi satu atau kedua konstanta manifes berikut, yang ditentukan dalam SYS\Stat.h.

pmode Makna
_S_IREAD Hanya membaca yang diizinkan.
_S_IWRITE Penulisan diizinkan. (Berlaku, mengizinkan pembacaan dan penulisan.)
_S_IREAD | _S_IWRITE Membaca dan menulis diizinkan.

Ketika kedua konstanta diberikan, konstanta tersebut digabungkan dengan bitwise atau operator (|). Jika izin tulis tidak diberikan, file bersifat baca-saja. Perhatikan bahwa semua file selalu dapat dibaca; tidak dimungkinkan untuk memberikan izin tulis-saja. Dengan demikian, mode _S_IWRITE dan _S_IREAD | _S_IWRITE setara.

_wchmod adalah versi karakter luas dari _chmod; filename argumen ke _wchmod adalah string karakter lebar. _wchmod dan _chmod berulah secara identik jika tidak.

Fungsi ini memvalidasi parameternya. Jika pmode bukan kombinasi dari salah satu konstanta manifes atau menggabungkan sekumpulan konstanta alternatif, fungsi hanya mengabaikannya. Jika filename adalah NULL, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, errno diatur ke EINVAL dan fungsi mengembalikan -1.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubahnya, lihat Status global di CRT.

Pemetaan rutin teks generik

Rutinitas Tchar.h _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tchmod _chmod _chmod _wchmod

Persyaratan

Rutin Header yang diperlukan Header opsional
_chmod <io.h> <sys/type.h>, <sys/stat.h>, <errno.h>
_wchmod <io.h> atau <wchar.h> <sys/type.h>, <sys/stat.h>, <errno.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

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

Lihat juga

Penanganan file
_access, _waccess
_creat, _wcreat
_fstat, , _fstat32_fstat64, _fstati64, , _fstat32i64,_fstat64i32
_open, _wopen
_stat, _wstat fungsi