简单来说,我想删除一个可能存在或不存在的文件。只使用remove(filename)并忽略返回值是不好的做法吗?
编辑:通过remove,我指的是这个
简单来说,我想删除一个可能存在或不存在的文件。只使用remove(filename)并忽略返回值是不好的做法吗?
编辑:通过remove,我指的是这个
一旦您无法仅锁定文件系统以进行以下操作:
您无法保证在 1
次检查文件后,该文件未被另一个进程删除。
因此,您应该:
remove
函数perror
调用显示错误文本]针对你的问题,答案取决于你的程序,而你提供的链接非常有帮助。如果你的程序很简单,我就不会这样做,但如果你的程序比较复杂,我会像cpluslplus.com那样检查返回值,因为你总是应该检查返回值。不这样做是不好的,因为这就像说:“我不会检查这个函数的返回值,并故意不覆盖所有可能性。”
foo.txt
是否存在。结果为 true。
2. 应用程序 #2 检查 foo.txt
是否存在。结果为 true。
3. 应用程序 #1 删除 foo.txt
。成功!
4. 应用程序 #2 删除 foo.txt
。糟糕!这是一个非常难回答的问题。如果您不在意文件是否被实际删除,那么可以忽略返回值。如果不检查返回值,就无法保证文件是否已被删除。很可能它已经被删除了,但如果由于某种原因它被锁定了呢?那么您可能会遇到麻烦。正如有人指出的那样,不检查返回代码很大程度上是一种碰运气的情况。