gpt4 book ai didi

c++ - 打开文件,不存在则创建,判断是否创建

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:38:42 31 4
gpt4 key购买 nike

我想编写执行以下操作的代码:

1) 打开一个文件(用于写入),如果文件不存在则创建该文件。

2) 在运行其他代码时确保文件存在(通过保持文件打开)。

3) 关闭文件,如果文件是在步骤 1 中创建的,则将其删除。

是否有任何 POSIX/C++17 stdlib/boost 文件系统函数使这变得容易?

注意:涉及多个 open 调用并在它们之间创建/删除文件时给出无效结果的解决方案不是我想要的。

最佳答案

由于创建文件(作为临时文件)的逻辑不同,您可以先检查文件是否存在。如果不使用 O_CREAT | 创建它O_EXCL 并将 fd 存储在 unique_ptr/shared_ptr 中,除了关闭 fd 之外,还使用删除文件的自定义删除器。 O_EXCL 是为了避免导致重复删除的竞争,并确保您确实创建了文件。如果您预计这是高度竞争的,您可以检查 EEXIST 并在这种情况下重试。如果您碰巧删除了由您的调用的另一个并行版本打开的临时文件,它将一直存在直到 fd 关闭。

关于c++ - 打开文件,不存在则创建,判断是否创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56249112/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com