Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如果文件是由';打开';但是没有';模式';如果指定,模式将是什么?_Linux_File_Unix - Fatal编程技术网

Linux 如果文件是由';打开';但是没有';模式';如果指定,模式将是什么?

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

我尝试在当前目录中创建一个文件“foo”,如下所示:

开放(“foo”,O|u CREAT | O|u EXCL | O|u RDWR)

第三个参数我没有给它一个“模式”,那么它会是什么呢? 在我的ubuntu 14.04上,这个新文件的模式似乎是一个随机值。
“模式”没有任何默认值吗?

在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);
模式
指定在创建新文件时使用的权限。当标志中指定了
O_create
O_TMPFILE
时,必须提供此参数


也就是说,如果
模式
没有在应该的时候提供,那么结果是未定义的

文档告诉了你什么?
手动umask
帮助umask
打开()是一个varargs函数。@wildplasser:是的,POSIX手册页显示
intopen(constchar*path,intoflag,…),但是除了Linux中的两个之外的任何内容都是未定义的。从一开始就是个坏主意,如果你问我。。。