Linux上的C有没有办法只写入一个已经存在的文件?换句话说,与open(..., O_CREAT|O_EXCL)
.
请注意,我不希望存在性检查与文件的实际打开(例如stat()
预先调用)脱钩,因为那将是一个竞争条件。
为此,我会尝试使用 O_WRONLY 打开文件,如果 open() 没有失败,则文件存在。您可以检查 errno 来检查错误。
我不知道还有什么办法。
ENOENT
在尝试打开没有O_CREAT
标志的文件时检查。
ENOENT O_CREAT 未设置且命名文件不存在;或设置了 O_CREAT 并且路径前缀不存在或路径参数指向空字符串。
如果你可以使用fopen
,那么:
file=fopen(some_sime, "r+");
if (file) fd=fileno(file);