关于open函数,一个很容易出错的问题

来源:互联网 发布:8管脚单片机 编辑:程序博客网 时间:2024/06/05 09:06

在编译一个开源软件的时候,在一处写文件的地方,发现总是权限有问题。

代码如下:

-----

fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 644)

-----

这么一看,好像没什么问题,

通过open创建一个文件,权限为644的。

网上有关于这个函数参数的介绍:

O_WRONLY 可读可写

O_CREAT 若此文件不存在,则创建它,用此选项的时候,需同时说明第三个参数mode

O_EXCL 如果同时指定了O_CREAT,则文件已经存在,则出错。这可测试一个文件是否存在,如果不存在则创建此文件成为一个原子操作。

mode为644.

按我们理解,644为wr* *r* *r*,

-----

那问题在哪里呢,

我们知道,通常用来表示权限的777,644这种的,实际是8进制的,

而如果我们直接写644,则c语言会当成10进制的数来处理,则会出问题。

8进制的644,需要前面加一个0,为0644

-----

:)



原创粉丝点击