我写了下面的C代码来打开一个不存在的文件。在C中使用open()函数创建的文件的默认访问模式是什么?
#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/stat.h>
#include<sys/types.h>
int main(){
int fd = open("test.c",O_WRONLY | O_CREAT);
printf("%d\n",fd);
close(fd);
}
虽然当我运行ls -l
命令的umask设置为0002,我得到我创建的文件下面的输出。
-r--rws--T 1 urohit011 urohit011 0 Feb 14 22:35 test.c
当我用新的文件名运行代码时,访问模式发生变化。我在这里有两个问题。
- 由于umask 是0002,该文件的默认访问模式不应该是664吗?
- 为什么访问模式在代码运行时改变了新文件名 ?
你确定要使用''test.c“'作为文件名吗?我希望你不会覆盖你的源文件。 –
@Someprogrammerdude我不认为名称“test.c”应该是一个问题,因为它在执行程序之前不存在。 –