_umask_s
既定のファイルのアクセス許可マスクを設定します。CRT のセキュリティ機能 に説明されているようにのセキュリティが強化されたバージョンのの _umask。
errno_t _umask_s(
int mode,
int * pOldMode
);
パラメーター
[入力] mode
既定のアクセス許可の設定。[出力] oldMode
アクセス許可の設定の値。
戻り値
Mode が有効なモードを指定していない場合または pOldMode のポインターが NULL はエラー コードを返します。
エラー条件
mode |
pOldMode |
戻り値 |
の内容 oldMode |
---|---|---|---|
任意 |
NULL |
EINVAL |
変更されない |
無効なモード |
任意 |
EINVAL |
変更されない |
上記の条件の 1 つが発生すると無効なパラメーター ハンドラーが パラメーターの検証 に説明されているように開始されます。実行の継続が許可された場合、_umask_s は EINVAL を返し、errno を EINVAL に設定します。
解説
モードに現在のプロセス内のファイルのアクセス許可マスクが mode で指定した _umask_s の関数のセット *。*ファイルのアクセス許可マスクは _creat_openまたは _sopen によって作成される新しいファイルのアクセス許可の設定を変更します。マスク ビットが 1 の場合ファイル要求されたアクセス許可の値の対応するビットが 0 に設定されます (拒否)。マスク ビットが 0 の場合対応するビットは変更されません。新しいファイルのアクセス許可の設定はファイルが初めて閉じるまで設定されません。
式は整数 pmode SYS \ STAT.H で次のマニフェスト定数 1 のいずれかまたは両方を定義して含まれています :
_S_IWRITE
許可される書き込みます。_S_IREAD
許可される読み取り。_S_IREAD | _S_IWRITE
許可される読み取りと書き込み。
定数が両方とも指定するとビットごとの OR 演算子で結合 (| ).mode の引数が _S_IREAD 場合読み取ることはできません (ファイルが書き込み専用です)。mode の引数が _S_IWRITE 場合書き込むことはできません (ファイルが読み取り専用です)。たとえば書き込みビットのマスクの設定の場合新しいファイルが読み取り専用です。MS-DOS および Windows オペレーティング システムとすべてのファイルは読み取り可能であることに注意してください ; 書き込み専用アクセス許可を与えることはできません。したがって_umask_s の読み取りビットを設定するとファイル モードには影響しません。
pmode がマニフェスト定数の 1 種類の組み合わせで別の定数を組み込む関数はは無視します。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_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