1
4
不,不是 安全的 .它可能在您的文件系统上工作,但在其他系统上失败。或者可能会间歇性失败。它实际上取决于您的操作系统和文件系统。要深入了解Solaris,请参见 article on file rotation . 看一看 GNU sed's '--in-place' option . 此选项的工作方式是将输出写入临时文件,然后在原始文件上进行复制。这是唯一安全、兼容的方法。 您还应该考虑到您的程序在任何时候都可能由于断电或进程被终止而失败。如果发生这种情况,则原始文件将丢失。此外,对于具有引用计数的文件系统,在临时文件解决方案中不节省任何空间,因为在关闭输入文件之前,两个文件都必须存在于磁盘上。 如果文件很大,空间也很宝贵,开发人员的时间也很便宜,那么您可以打开一个用于读/写的文件,并确保您的写指针不会超出您的读指针。 |
2
4
我知道的所有允许您删除打开的文件的系统都为文件节点实现某种形式的引用计数。因此,删除文件会删除目录条目,但文件节点本身仍然有一个来自打开文件句柄的引用。在这种实现中,删除一个文件显然不会影响继续读取它的能力,我发现很难想象任何其他合理的方法来实现这种行为。 |
3
1
我一直都在Linux/Unix上使用它。千万不要在Windows、OS/2或(颤栗)DOS上。你还关心其他平台吗? 这种行为实际上在使用临时磁盘空间时很有用——打开文件进行读/写,然后立即将其删除。它会在程序退出时自动清除(出于任何原因,包括断电),并使其他人更难(但并非不可能)监视它(/proc可以提供线索,如果您具有对该进程的读取权限)。 |
JuMoGar · 读/写特殊字符(如颚化符,…)在控制台应用程序C中 6 年前 |
Cosinus · fwrite是否刷新“\n”上的缓冲区? 6 年前 |
i486 · fread()参数2和3 7 年前 |
ghdrlfehd123 · 这个值来自哪里?[已关闭] 7 年前 |
Raph · 在C中并排打印2D阵列 7 年前 |
Raph · 在C中创建空心矩形,而不添加空格作为其元素 7 年前 |
lefrost · 从文本文件中计算字数时出错 7 年前 |
lefrost · 对文本文件中的整数进行计数和求和时遇到问题 7 年前 |
jackson · C fork程序说明 7 年前 |