与O_CREAT相反| O_EXCL

时间:2013-07-22 14:07:25

标签: c linux unix posix

如果Linux上的C已存在,那么它是否只能写入文件?换句话说,与open(..., O_CREAT|O_EXCL)相反。

请注意,我不希望存在检查与文件的实际打开解耦(比如事先调用stat()),因为这将是竞争条件。

3 个答案:

答案 0 :(得分:1)

为此,我会尝试使用O_WRONLY打开文件,如果open()没有失败,则文件存在。您可以检查errno以检查错误。

我不知道其他任何方式。

答案 1 :(得分:1)

在尝试打开没有ENOENT标记的文件时检查O_CREAT

  

未设置ENOENT O_CREAT且命名文件不存在;或者设置O_CREAT,路径前缀不存在或路径参数指向空字符串。

答案 2 :(得分:0)

如果您可以使用fopen,那么:

file=fopen(some_sime, "r+");
if (file) fd=fileno(file);