为了账号安全,请及时绑定邮箱和手机立即绑定

输出重定向应重新创建目标文件

输出重定向应重新创建目标文件

人到中年有点甜 2021-04-09 18:13:58
我可以将流程的输出重定向到文件./prog > a.txt但是,如果我删除a.txt并且不重新启动编,则不会再有更多输出进入a.txt。如果我使用append-redirect >>,情况也是如此。在prog运行时删除文件时,是否有办法使我的重定向重新创建文件?重定向是我认为的操作系统的一部分,而不是编的一部分。因此,也许有一些工具或设置。
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

在操作系统级别,文件由许多组件组成:

  • 内容存储在存储设备上的某个位置;

  • 保留除名称之外的所有文件信息的索引节点;

  • 目录中列出的名称(也存储在存储设备上);

  • 打开文件时,每个打开该文件的应用程序都会处理保留一些文件内容的内存缓冲区。

所有这些均已链接,操作系统将保留其预订。

如果在文件被另一个应用程序打开时删除了文件(重定向操作符>将其保持打开状态,直到./prog完成),则只会从目录中删除该名称。难题的其他部分仍然存在,并且它们一直保持工作,直到最后一个使文件保持打开状态的应用程序将其关闭。这是当文件内容被丢弃在存储介质上时。

如果删除文件,则文件./prog将继续运行并产生输出,并且会增长并使用存储介质上的空间,但由于无法访问它,因此无法再次打开该文件。只有删除该文件时已经打开的程序仍可以访问该文件,直到他们将其关闭。

即使您重新创建该文件,它也是一个与已删除文件名称相同的不同文件。./prog不受影响,其输出将转到旧的,已删除的文件。

重定向其输出后,除了重新启动外./prog,无法说服它在a.txt删除后将其输出存储在其他文件中。

如果./prog将其自身写入,有几种方法可以实现a.txt(它们都需要更改的代码./prog)。


查看完整回答
反对 回复 2021-04-16
  • 2 回答
  • 0 关注
  • 297 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信