_umask_s
既定のファイル アクセス許可マスクを設定します。 CRT のセキュリティ機能の説明に従って、セキュリティが強化された_umask
のバージョン。
構文
errno_t _umask_s(
int mode,
int* pOldMode
);
パラメーター
mode
既定のアクセス許可の設定。
pOldMode
アクセス許可設定の以前の値。
戻り値
mode
が有効なモードを指定しない場合、またはpOldMode
ポインターがNULL
場合は、エラー コードを返します。
エラー条件
mode |
pOldMode |
戻り値 | pOldMode の内容 |
---|---|---|---|
任意 | NULL |
EINVAL |
変更されない |
無効なモード | 任意 | EINVAL |
変更されない |
上記のいずれかの条件が発生した場合は、「パラメーターの検証で説明されているように、無効なパラメーター ハンドラー呼び出されます。 実行の継続が許可された場合、_umask_s
は EINVAL
を返し、errno
を EINVAL
に設定します。
解説
_umask_s
関数は、現在のプロセスのファイルアクセス許可マスクを、mode
で指定されたモードに設定します。 ファイルのアクセス許可マスクは、_creat
、_open
、または _sopen
によって新しく作成されたファイルのアクセス許可の設定を変更します。 マスクのビットが 1 の場合は、ファイルの要求されたアクセス許可値に対応するビットは 0 (許可しない) に設定されます。 マスクのビットが 0 の場合は、対応するビットは変更されません。 新しいファイルのアクセス許可設定は、ファイルが初めて閉じられるまで設定されません。
整数式 mode
には、 SYS\STAT.H
で定義されている次のマニフェスト定数のいずれかまたは両方が含まれます。
mode |
説明 |
---|---|
_S_IWRITE |
書き込みが許可されます。 |
_S_IREAD |
読み取りが許可されます。 |
_S_IREAD | _S_IWRITE |
読み取りと書き込みが許可されます。 |
両方の定数が指定されると、ビットごとの OR 演算子 ( |
) と結合されます。 mode
引数が_S_IREAD
されている場合、読み取りは許可されません (ファイルは書き込み専用です)。 mode
引数が_S_IWRITE
されている場合、書き込みは許可されません (ファイルは読み取り専用です)。 たとえば、マスクに書き込みビットが設定されている場合、新しいファイルはいずれも読み取り専用となります。 MS-DOS および Windows オペレーティング システムでは、すべてのファイルが読み取り可能です。書き込み専用のアクセス許可を付与することはできません。 したがって、_umask_s
で読み取りビットを設定しても、ファイルのモードに影響はありません。
mode
マニフェスト定数の 1 つの組み合わせではない場合、または定数の代替セットが組み込まれている場合、関数はそれらを無視します。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 これを変更するには、「CRT でのグローバル状態」を参照してください。
要件
機能 | 必須ヘッダー |
---|---|
_umask_s |
<io.h> 、<sys/stat.h> および <sys/types.h> |
互換性の詳細については、「 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");
exit(1);
}
printf( "Oldmask = 0x%.4x\n", oldmask );
}
Oldmask = 0x0000
関連項目
ファイル処理
低レベル I/O
_chmod
, _wchmod
_creat
, _wcreat
_mkdir
, _wmkdir
_open
, _wopen
_umask