在我的c代码中,我使用open()
选项O_CREAT|O_RDWR
然后write()
写信给afile:
readfd = open("ak.bin", O_CREAT|O_RDWR);
if (readfd >= 0) {
res = write(readfd, key, 16);
close(readfd);
}
执行我的程序后,我发现文件"ak.bin"
仅具有写入权限。我看不懂!
$ ls -l | grep ak
-----w---- 1 mohamed mohamed 16 Jun 3 18:30 ak.bin
我缺少什么?我希望我的文件也可以重新编写。
答案 0 :(得分:2)
创建(O_CREAT
)文件时,应指定模式。
来自人open(2):
mode参数指定在新的时应用文件模式位 文件已创建。 必须在O_CREAT或时提供此参数 O_TMPFILE在标志中指定;如果既未指定O_CREAT也未指定O_TMPFILE,则忽略mode。该 有效模式由通常的进程的umask修改 方式:在没有默认ACL的情况下,创建模式 文件是(mode& ~umask)。请注意,此模式仅适用于 将来访问新创建的文件; open()调用 创建只读文件可能会返回读/写 文件描述符。