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

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

代码如下:

-----

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

-----

:)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值