umask() - ファイル作成マスクの設定と検索

標準

標準/拡張機能 C/C++ 依存項目

POSIX.1
XPG4
XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

#define _POSIX_SOURCE
#include <sys/stat.h>

mode_t umask(mode_t newmask);

機能説明

プロセスのファイル作成マスクを変更します。newmask は、プロセスのファイル作成マスク用の新規のファイル許可ビットを 指定します。

このマスクは、現行のプロセスが発行した関数 open()、creat()、mkdir()、および mkfifo() のすべてを用いて使用した ‘mode’ 引数で指定された ファイル許可ビットの設定値を制限します (あるいはオフにします)。ファイル作成マスクで 1 に設定されたファイル許可ビットは、プロセスによって作成されるファイルのファイル許可ビットで 0 に 設定されます。

例えば、open() への呼び出しがファイル許可ビットを 使用して mode 引数を指定した場合には、プロセスの ファイル作成マスクは mode 引数に影響を与えます。マスクで 1 になっているビットは、mode 引数および 作成されたファイルのモードでは 0 に設定されます。

新規のマスクのファイル許可ビットだけが使用されます。他の ビットの意味は、定義されたインプリメンテーションです。これらのシンボルについての詳細は、chmod() - ファイルまたはディレクトリーのモードの変更を参照してください。

_EDC_UMASK_DFLT 環境変数は、C ランタイム・ライブラリーがデフォルト umask を設定する方法を制御します。 z/OS® UNIX が使用可能な場合には、ランタイム・ライブラリーは 022 8 進数の デフォルト umask 値を確立し、_EDC_UMASK_DFLT 環境変数の値を 照会します。_EDC_UMASK_DFLT は次の値をもつことができます。
NO (大文字小文字は区別しない)
ライブラリーは umask を変更しないでください。
有効 8 進値
ライブラリーは、これを umask のデフォルトの値として使用する 必要があります。

環境変数の他の値によって、ランタイム・ライブラリーが 022 8 進数 を umask 値として使用することになります。

戻り値

umask() は常に正常に行われ、ファイル作成マスクの前の値を 戻します。

設定される errno 値はありません。

CELEBU01
⁄* CELEBU01

   This example will work only from C⁄MVS, not C++⁄MVS.

 *⁄
#define _POSIX_SOURCE
#include <fcntl.h>
#include <sys⁄stat.h>
#include <sys⁄types.h>
#include <unistd.h>
#undef _POSIX_SOURCE
#include <stdio.h>

main() {
  int fd;
  mode_t oldmask;

  printf("Your old umask is %i¥n",oldmask=umask(S_IRWXG));
  if ((fd = creat("umask.file", S_IRWXU|S_IRWXG)) < 0)
    perror("creat() error");
  else {
    system("ls -l umask.file");
    close(fd);
    unlink("umask.file");
  }
  umask(oldmask);
}
出力:
-rwx------   1 WELLIE   SYS1           0 Apr 19 14:50 umask.file

関連情報