我尝试在当前目录中创建一个文件“foo”,如下所示:
open(“foo”,O_CREAT | O_EXCL | O_RDWR);
我没有给第三个参数'模式',那会是什么? 在我的ubuntu 14.04上,这个新文件的模式似乎是一个随机值。 “模式”没有默认值吗?
答案 0 :(得分:2)
在POSIX man 3p open
中没有说清楚,但是在Linux man 2 open
中:
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
mode
指定在创建新文件时使用的权限。在flags中指定O_CREAT
或O_TMPFILE
时,必须提供 这个参数。
也就是说,如果未提供mode
,则结果为未定义。