【发布时间】:2013-08-09 03:32:05
【问题描述】:
关于remove 函数的行为,C99 标准的措辞似乎有点含糊。
在第 7.19.4.1 节第 2 段:
remove函数导致文件名是filename所指向的字符串 不再可以通过该名称访问。随后尝试使用该文件打开该文件 name 将失败,除非重新创建它。
C99 标准是否保证 remove 函数将删除文件系统上的文件,或者实现是否可以简单地忽略该文件 -- 保留该文件文件系统,但当前程序无法通过该文件名访问 - 对于程序的其余部分?
【问题讨论】:
-
remove()不打电话给unlink()吗?如果是这种情况,则无法保证该文件已从磁盘中删除,因为可能有更多指向该文件的链接。如果它是最后一个链接,那么它将从磁盘中“删除”。该空间将可供重复使用。但它很可能仍会驻留在磁盘上,直到被覆盖。 -
三个答案,没有一个能解决实际问题。问题是,“如果我打电话给
remove(),它是否必须实际尝试实际删除此文件(是的,它可能会以多种方式失败),还是允许它简单地返回成功,然后不允许这个程序的这个实例再看那个文件吗?"
标签: c c99 language-lawyer standard-library