C中的UMASK功能

mrg*_*mrg 1 c unix linux umask

#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
void main()
{
    umask(0000);
    creat("a.txt",666);
}
Run Code Online (Sandbox Code Playgroud)

我的预期输出是名称为“ a.txt”且许可为“ rwrwrw”的文件。但是,输出如下。

输出:

$ ls -l a.txt 
--w--wx-wT 1 mohanraj mohanraj 0 Sep 11 19:04 a.txt
$
Run Code Online (Sandbox Code Playgroud)

umask设置为0。因此,我希望使用默认文件权限666创建该文件。但是,它会提供一些其他输出。因此,umask在内部如何工作。以及我如何获得预期的结果。

dbu*_*ush 5

您指定的文件创建模式为十进制格式。文件创建模式通常以八进制指定,因此您应在数字前加0开头,以告诉编译器它是八进制常量。

creat("a.txt",0666);
Run Code Online (Sandbox Code Playgroud)

十进制666 =八进制1232,与您得到的结果相匹配。