標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
POSIX.1 |
両方 |
#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() - ファイルまたはディレクトリーのモードの変更を参照してください。
環境変数の他の値によって、ランタイム・ライブラリーが 022 8 進数 を umask 値として使用することになります。
umask() は常に正常に行われ、ファイル作成マスクの前の値を 戻します。
設定される errno 値はありません。
⁄* 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