int open(const char *pathname, int flags, ...); |
[advanced programming in the unix environment]P.48 关于函数第二个参数对O_CREAT和O_EXCL的描述很有歧义
O_CREAT是说如果文件不存在就创建之 第三个参数mode指定访问权限 如0644(八进制) 如果文件存在就直接打开(第三个参数变成修改权限? 还是直接忽略了?)
一开始以为 O_EXCL必须和O_CREAT一起使用 否则没有作用 实际上O_EXCL本身就是用来测试文件是否存在的 如果文件不存在 则返回出错-1 文件存在则没反应 而当使用O_CREAT|O_EXCL的话则是相反的 如果文件不存在就创建文件 文件存在则返回出错
真是神奇的O_EXCL啊...
#include <stdio.h> |
第一次运行程序 创建文件 第二次运行 则返回error
如果if语句里改为O_RDWR|O_EXCL 则第一次就返回error
PS. 看书的心情
被一系列的事情打断 就不记得上次看书时 是什么心情了