_umask_s

Mengatur masker izin file default. Versi _umask dengan peningkatan keamanan seperti yang dijelaskan dalam Fitur keamanan di CRT.

Sintaks

errno_t _umask_s(
   int mode,
   int* pOldMode
);

Parameter

mode
Pengaturan izin default.

pOldMode
Nilai sebelumnya dari pengaturan izin.

Nilai hasil

Mengembalikan kode kesalahan jika mode tidak menentukan mode yang valid atau pOldMode penunjuknya adalah NULL.

Kondisi kesalahan

mode pOldMode Nilai hasil Isi dari pOldMode
any NULL EINVAL tidak dimodifikasi
mode tidak valid any EINVAL tidak dimodifikasi

Jika salah satu kondisi di atas terjadi, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, _umask_s mengembalikan EINVAL dan mengatur errno ke EINVAL.

Keterangan

Fungsi ini _umask_s mengatur masker izin file dari proses saat ini ke mode yang ditentukan oleh mode. Masker izin file memodifikasi pengaturan izin file baru yang dibuat oleh _creat, _open, atau _sopen. Jika sedikit dalam masker adalah 1, bit yang sesuai dalam nilai izin yang diminta file diatur ke 0 (tidak diizinkan). Jika sedikit di masker adalah 0, bit yang sesuai dibiarkan tidak berubah. Pengaturan izin untuk file baru tidak diatur hingga file ditutup untuk pertama kalinya.

Ekspresi mode bilangan bulat berisi satu atau kedua konstanta manifes berikut, yang ditentukan dalam SYS\STAT.H:

mode Deskripsi
_S_IWRITE Penulisan diizinkan.
_S_IREAD Membaca diizinkan.
_S_IREAD | _S_IWRITE Membaca dan menulis diizinkan.

Ketika kedua konstanta diberikan, konstanta tersebut digabungkan dengan operator bitwise-OR ( | ). mode Jika argumen adalah _S_IREAD, membaca tidak diperbolehkan (file hanya tulis). mode Jika argumen adalah _S_IWRITE, penulisan tidak diizinkan (file bersifat baca-saja). Misalnya, jika bit tulis diatur dalam mask, file baru apa pun akan bersifat baca-saja. Dalam MS-DOS dan sistem operasi Windows, semua file dapat dibaca; tidak dimungkinkan untuk memberikan izin tulis-saja. Oleh karena itu, mengatur bit baca dengan _umask_s tidak berpengaruh pada mode file.

Jika mode bukan kombinasi dari salah satu konstanta manifes atau menggabungkan sekumpulan konstanta alternatif, fungsi akan mengabaikannya.

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

Persyaratan

Function Header yang diperlukan
_umask_s <io.h>dan dan <sys/stat.h><sys/types.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// crt_umask_s.c
/* This program uses _umask_s to set
* the file-permission mask so that all future
* files will be created as read-only files.
* It also displays the old mask.
*/

#include <sys/stat.h>
#include <sys/types.h>
#include <io.h>
#include <stdio.h>

int main( void )
{
   int oldmask, err;

   /* Create read-only files: */
   err = _umask_s( _S_IWRITE, &oldmask );
   if (err)
   {
      printf("Error setting the umask.\n");
      exit(1);
   }
   printf( "Oldmask = 0x%.4x\n", oldmask );
}
Oldmask = 0x0000

Baca juga

Penanganan file
I/O tingkat rendah
_chmod, _wchmod
_creat, _wcreat
_mkdir, _wmkdir
_open, _wopen
_umask