很简单,我想删除可能存在或不存在的文件。使用remove(filename)并忽略返回值是不好的做法吗?
编辑:删除后,我指的是this
答案 0 :(得分:2)
在删除文件之前,我应该检查文件是否存在吗?
没有这样的要求或需要,这样做没有任何用处。
并忽略返回值?
通常,用户可能想知道文件是否被删除,因此忽略返回值通常是个坏主意。此外,用户可能还想知道为什么文件未被删除(参见std::perror
)。
答案 1 :(得分:1)
只要你不能锁定文件系统
您无法保证在1
检查文件未被其他进程删除后。
所以你应该:
remove
功能perror
来电显示错误文字] 答案 2 :(得分:0)
您的问题的答案实际上取决于您的计划,您提供的链接非常有用。如果你的程序是微不足道的,我不会这样做,但是如果你的程序非常重要,我会检查值,就像cpluslplus.com那样,因为总是应该检查返回值。这不好,因为它就像是在说:“我不会检查此函数的返回值,并且故意不会涵盖所有可能性。”
答案 3 :(得分:0)
C ++我应该在删除之前检查文件是否存在吗?
您可以,但永远依赖于代码中的结果。您可以在代码和可能在同一文件上竞争的其他线程/应用程序之间引入竞争条件。请考虑以下事项:
foo.txt
是否存在。结果是真的。foo.txt
是否存在。结果是真的。foo.txt
。成功了!foo.txt
。哎呦!使用remove(filename)...
是不好的做法
不,完全没有。
...并忽略返回值?
您唯一想忽略系统调用的返回代码的时间是真的不关心结果,这确实非常罕见。删除文件时,您应该记录返回值,然后如果/当文件无法删除(例如权限问题,已删除等),您可以通知用户操作失败或记录以进行调试。
答案 4 :(得分:0)
这是一个非常难以回答的问题。如果您不关心文件是否实际被删除,但无论如何都要忽略返回值。如果不检查返回值,则无法保证文件是否已被删除。最有可能的是,它会是,但如果由于某种原因被锁定怎么办?那你可能遇到麻烦了。正如有人指出的那样,不检查返回代码是非常受欢迎和希望的情况。