我用 creat
函数在 linux 上写下了一小段 C 代码。我用相同的文件名和相同的 mode
使用了它几次,每次它都用新的时间和权限覆盖我的文件,没有 EEXIST
错误。
if (creat(name, mode) < 0)
{
printf("something went wrong with create! %s\n", strerror(errno));
exit(1);
}
问题是什么?
最佳答案
EEXIST
仅在 O_CREAT | 时返回O_EXCL
用于 open
的标志中。同时creat(2)
确实暗示O_CREAT
,它不暗示O_EXCL
,只是O_CREAT | O_WRONLY | O_TRUNC
.
您应该改用open
。
关于create() 覆盖我的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37555851/