_umask_s
既定のファイル アクセス許可マスクを設定します。 この関数は、「CRT のセキュリティ機能」に説明されているように、_umask のセキュリティが強化されたバージョンです。
errno_t _umask_s(
int mode,
int * pOldMode
);
パラメーター
[入力] mode
アクセス許可の既定の設定。[出力] oldMode
以前のアクセス許可の設定値。
戻り値
Mode で指定するモードが無効な場合、または pOldMode ポインターが NULL の場合は、エラー コードを返します。
エラー条件
mode |
pOldMode |
戻り値 |
oldMode の内容 |
---|---|---|---|
any |
NULL |
EINVAL |
変更されない |
無効なモード |
any |
EINVAL |
変更されない |
上記のいずれかの条件が発生すると、「パラメーターの検証」に説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、_umask_s は EINVAL を返し、errno を EINVAL に設定します。
解説
_umask_s 関数は、現在のプロセスのファイルのアクセス許可マスクを mode で指定されているモードに設定します。ファイルのアクセス許可マスクによって、_creat、_open、または _sopen で作成された新規ファイルのアクセス許可の設定が変更されます。 マスクのビットが 1 の場合、ファイルに対して要求されるアクセス許可値の中の対応ビットが 0 (不許可) に設定されます。 マスクのビットが 0 の場合、対応するビットは変更されません。 新規ファイルのアクセス許可は、そのファイルを初めて閉じたときに設定されます。
整数式 pmode には、SYS\STAT.H で定義されている次の記号定数のいずれか、または両方を指定します。
_S_IWRITE
書き込み許可。_S_IREAD
読み取り許可。_S_IREAD | _S_IWRITE
ファイルの読み取りおよび書き込みを許可します。
両方の定数を指定する場合は、ビットごとの OR 演算子 (| ). 引数 mode が _S_IREAD の場合は、読み取り禁止 (ファイルは書き込み専用) になります。 引数 mode が _S_IWRITE の場合は、書き込み禁止 (ファイルは読み取り専用) になります。 たとえば、マスクに書き込みビットが設定されている場合は、すべての新規ファイルが読み取り専用になります。 MS-DOS と Windows オペレーティング システムでは、すべてのファイルが読み取り可能です。書き込み専用のアクセス許可を与えることはできません。 したがって、_umask_s で読み取りビットを設定しても、ファイルのモードには影響しません。
pmode がマニフェスト定数のいずれかとの組み合わせになっていない場合や、代わりの定数セットを組み込んでいる場合は、関数によりこれらが無視されるだけです。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_umask_s |
<io.h>、<sys/stat.h>、および<sys/types.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// 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 );
}
同等の .NET Framework 関数
System::IO::File::SetAttributes