create() 覆盖我的文件

标签 c linux filenames file-permissions

我用 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/

相关文章:

ruby - 将 Ruby 字符串转换为 *nix 文件名兼容字符串

linux - 创建新文件但如果文件名已存在于 bash 中则添加数字

针对 C 中的多种类型进行编译时检查?

c - AVR GCC - 类型转换问题

c++ - 从 *nix 系统获取 C++ 代码中的特定文件

handler - PDF 处理程序 : content-disposition filename

c - MinGW 中的 strstr 和 StrStrI 以及 C 中的函数作为参数

C - 需要帮助调试国际象棋功能

linux - 使用 bash 提取 JSON 变量

xml - 从 Linux 上的 curl 命令结果中提取 xml 部分