1

Linux上的C有没有办法只写入一个已经存在的文件?换句话说,与open(..., O_CREAT|O_EXCL).

请注意,我不希望存在性检查与文件的实际打开(例如stat()预先调用)脱钩,因为那将是一个竞争条件。

4

3 回答 3

1

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

我不知道还有什么办法。

于 2013-07-22T14:19:34.710 回答
1

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

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

于 2013-07-22T14:20:01.553 回答
0

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

file=fopen(some_sime, "r+");
if (file) fd=fileno(file);
于 2013-07-22T14:44:39.617 回答