rip*_*234 18 open-files rename files
我刚刚将一个日志文件重命名为“foo.log.old”,并假设应用程序将开始在“foo.log”处写入一个新的日志文件。我惊讶地发现它跟踪日志文件到它的新名称,并不断向“foo.log.old”附加行。
在 Windows 中,我不熟悉这种行为——我不知道是否有可能实现它。这种行为在 linux 中究竟是如何实现的?我在哪里可以了解更多信息?
dmc*_*ten 23
程序通过文件系统维护的编号(在传统的 unix 文件系统上称为 inode)连接到文件,该名称只是一个引用(可能不是唯一的引用)。
所以有几点需要注意:
mv不会更改该底层编号,除非您跨文件系统移动它(这相当于在原始文件上使用cpthen rm)。opensa 文件时,它会引用它(出于何时删除数据的目的),相当于将文件名连接到它。这会导致多种行为,例如:
open读取文件,但直到用户rm在命令行中编辑它之后才真正读取它,并且程序仍然可以访问数据。mv处理文件不会断开文件与打开它的任何程序之间的关系(除非您跨越文件系统边界移动,在这种情况下,程序仍然有原始版本可以处理)。open编辑了一个用于写入的文件,并且用户rm在命令行中使用它的最后一个文件名,则程序可以继续将内容放入文件中,但是一旦关闭,将不再引用该数据并且它会消失。open。(这不是真正的安全意识,它只是将一个巨大的漏洞转化为竞争条件。)| 归档时间: |
|
| 查看次数: |
4492 次 |
| 最近记录: |