2011-08-21 57 views
5

我试图用open()api调用在追加模式下打开文件,但下面的代码不工作!它不写任何文件!这里是我的代码:以追加模式打开文件:使用打开()API

enter image description here

+0

似乎它应该工作。 –

+0

另外,在strace下运行你的程序的输出是什么?它如何失败? – bdonlan

+1

你是否检查'write'返回的值'n'是什么?使用printf打印出来然后检查。另外,在写入文件后关闭文件。 –

回答

14

O_APPEND本身不是一个模式;这是一面旗帜。由于O_RDONLY的值为0,这就好比你试图打开文件只读而附加,这是无稽之谈。使用O_WRONLY|O_APPENDO_RDWR|O_APPEND

+0

严格地说,不使用任何'O_RDONLY','O_RDWR'或'O_WRONLY'的open是未定义的行为,在Linux的特定情况下,'O_RDONLY = 0 ',所以碰巧结果是这样:) – bdonlan

+0

ok!我不知道!谢谢! –

+0

据我所知,在所有的历史实现中,“O_RDONLY”都是0。 –