既定のファイル アクセス許可マスクを設定します。Sets the default file-permission mask. Security Features in the CRT」 (CRT のセキュリティ機能) の説明にあるとおり、セキュリティが強化されたバージョンの _umask です。A version of _umask with security enhancements as described in Security Features in the CRT.


errno_t _umask_s(
   int mode,
   int * pOldMode


既定のアクセス許可の設定。Default permission setting.

アクセス許可設定の以前の値。The previous value of the permission setting.

戻り値Return Value

モード で有効なモードが指定されていない場合、または poldmode ポインターが NULL の場合は、エラーコードを返します。Returns an error code if mode does not specify a valid mode or the pOldMode pointer is NULL.

エラー条件Error Conditions

modemode pOldModepOldMode 戻り値Return value Poldmode の内容Contents of pOldMode
anyany NULLNULL EINVALEINVAL 変更されないnot modified
無効なモードinvalid mode anyany EINVALEINVAL 変更されないnot modified

上記のいずれかの条件が発生すると、「パラメータの検証」に説明されているように、無効なパラメーター ハンドラ―が呼び出されます。If one of the above conditions occurs, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、 _umask_seinval を返し、 errnoeinval に設定します。If execution is allowed to continue, _umask_s returns EINVAL and sets errno to EINVAL.


_Umask_s 関数は、現在のプロセスのファイルアクセス許可マスクを モード によって指定されたモードに設定します。The _umask_s function sets the file-permission mask of the current process to the mode specified by mode. ファイルのアクセス許可マスクは、 _creat_open、または _sopen によって作成された新しいファイルのアクセス許可の設定を変更します。The file-permission mask modifies the permission setting of new files created by _creat, _open, or _sopen. マスクのビットが 1 の場合は、ファイルの要求されたアクセス許可値に対応するビットは 0 (許可しない) に設定されます。If a bit in the mask is 1, the corresponding bit in the file's requested permission value is set to 0 (disallowed). マスクのビットが 0 の場合は、対応するビットは変更されません。If a bit in the mask is 0, the corresponding bit is left unchanged. 新しいファイルのアクセス許可の設定は、そのファイルが最初に閉じられるまで、設定されません。The permission setting for a new file is not set until the file is closed for the first time.

整数式 pmode には、sysstatで定義されている次のマニフェスト定数のいずれかまたは両方が含まれています。始めThe integer expression pmode contains one or both of the following manifest constants, defined in SYS\STAT.H:

_S_IWRITE_S_IWRITE 書き込みが許可されます。Writing permitted.
_S_IREAD_S_IREAD 読み取りが許可されます。Reading permitted.
_S_IREAD |_S_IWRITE_S_IREAD | _S_IWRITE 読み取りと書き込みが許可されます。Reading and writing permitted.

両方の定数が指定されている場合は、ビットごとの OR 演算子 () と結合され | ます。When both constants are given, they are joined with the bitwise-OR operator ( | ). モード 引数が _S_IREAD の場合、読み取りは許可されません (ファイルは書き込み専用です)。If the mode argument is _S_IREAD, reading is not allowed (the file is write-only). モード 引数が _S_IWRITE の場合、書き込みは許可されません (ファイルは読み取り専用です)。If the mode argument is _S_IWRITE, writing is not allowed (the file is read-only). たとえば、マスクに書き込みビットが設定されている場合、新しいファイルはいずれも読み取り専用となります。For example, if the write bit is set in the mask, any new files will be read-only. MS-DOS および Windows オペレーティング システムでは、すべてのファイルは読み取り可能です。書き込み専用のアクセス許可を与えることはできません。Note that with MS-DOS and the Windows operating systems, all files are readable; it is not possible to give write-only permission. このため、読み取りビットを _umask_s に設定しても、ファイルのモードには影響しません。Therefore, setting the read bit with _umask_s has no effect on the file's modes.

Pmode がマニフェスト定数のいずれかの組み合わせではない場合、または別の定数セットを組み込んでいる場合、関数は単にそれらを無視します。If pmode is not a combination of one of the manifest constants or incorporates an alternate set of constants, the function will simply ignore those.

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。By default, this function's global state is scoped to the application. これを変更するには、「 CRT でのグローバル状態」を参照してください。To change this, see Global state in the CRT.


ルーチンによって返される値Routine 必須ヘッダーRequired header
_umask_s_umask_s <io.h>および <sys/stat.h><sys/types.h><io.h> and <sys/stat.h> and <sys/types.h>

互換性の詳細については、「互換性」を参照してください。For additional compatibility information, see Compatibility.


// 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");
   printf( "Oldmask = 0x%.4x\n", oldmask );
Oldmask = 0x0000

関連項目See also

ファイルの処理File Handling
低レベル i/oLow-Level I/O
_chmod、_wchmod_chmod, _wchmod
_creat、_wcreat_creat, _wcreat
_mkdir、_wmkdir_mkdir, _wmkdir
_open、_wopen_open, _wopen