如果Linux上的C已存在,那么它是否只能写入文件?换句话说,与open(..., O_CREAT|O_EXCL)
相反。
请注意,我不希望存在检查与文件的实际打开解耦(比如事先调用stat()
),因为这将是竞争条件。
答案 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);