2011-12-12 59 views
0

我有一个小应用程序,显示一个日志文件的内容,有点transmogied为了可读性。由于日志文件偶尔被重写,而Windows文件系统语义禁止删除打开的文件,因此我创建了一个指向该文件的硬链接。隐形硬链接

显然,这需要在与原始文件相同的文件系统上发生 - 目前,我在同一个目录中创建硬盘,我相信这可以合理地假设满足这个要求;结果是临时文件出现在目录列表中用户刚点击打开文件的地方,这很丑陋。

有没有办法创建一个硬链接,使其不显示(程序使用的客户在其目录树中有几个连接点,所以不能认为特定的目录在同一个文件系统上) ,还是有更好的方法来读取另一个进程可能想要删除和重写的文件(例如通过在让其他进程的访问通过之前捕获它们的访问并关闭文件),因此该程序可以用于归档(只读)日志文件没有修改?

+2

在CreateFile()调用中使用FILE_SHARE_DELETE选项,以便另一个进程可以在文件正在使用时删除该文件。该文件实际上并没有从文件系统中消失,直到最后一个句柄关闭。 –

回答

0
  1. 没有
  2. 它不会,如果你能有所帮助。共享跨越链接。
  3. 使用Hans Passant提出的解决方案作为评论。