Linux 如果文件是由';打开';但是没有';模式';如果指定,模式将是什么?
我尝试在当前目录中创建一个文件“foo”,如下所示: 开放(“foo”,O|u CREAT | O|u EXCL | O|u RDWR) 第三个参数我没有给它一个“模式”,那么它会是什么呢? 在我的ubuntu 14.04上,这个新文件的模式似乎是一个随机值。Linux 如果文件是由';打开';但是没有';模式';如果指定,模式将是什么?,linux,file,unix,Linux,File,Unix,我尝试在当前目录中创建一个文件“foo”,如下所示: 开放(“foo”,O|u CREAT | O|u EXCL | O|u RDWR) 第三个参数我没有给它一个“模式”,那么它会是什么呢? 在我的ubuntu 14.04上,这个新文件的模式似乎是一个随机值。 “模式”没有任何默认值吗?在POSIXman 3p open中,它说得不是很清楚,但在Linuxman 2 open中: int open(const char *pathname, int flags); int open(const
“模式”没有任何默认值吗?在POSIX
man 3p open
中,它说得不是很清楚,但在Linuxman 2 open
中:
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
模式
指定在创建新文件时使用的权限。当标志中指定了O_create
或O_TMPFILE
时,必须提供此参数
也就是说,如果
模式
没有在应该的时候提供,那么结果是未定义的文档告诉了你什么?手动umask
或帮助umask
。打开()
是一个varargs函数。@wildplasser:是的,POSIX手册页显示intopen(constchar*path,intoflag,…)代码>,但是除了Linux中的两个之外的任何内容都是未定义的。从一开始就是个坏主意,如果你问我。。。