次の方法で共有


_umask_s

既定のファイル アクセス許可マスクを設定します。 CRT のセキュリティ機能の説明に従って、セキュリティが強化された_umaskのバージョン。

構文

errno_t _umask_s(
   int mode,
   int* pOldMode
);

パラメーター

mode
既定のアクセス許可の設定。

pOldMode
アクセス許可設定の以前の値。

戻り値

modeが有効なモードを指定しない場合、またはpOldMode ポインターがNULL場合は、エラー コードを返します。

エラー条件

mode pOldMode 戻り値 pOldMode の内容
任意 NULL EINVAL 変更されない
無効なモード 任意 EINVAL 変更されない

上記のいずれかの条件が発生した場合は、「パラメーターの検証で説明されているように、無効なパラメーター ハンドラー呼び出されます。 実行の継続が許可された場合、_umask_sEINVAL を返し、errnoEINVAL に設定します。

解説

_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