gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:11 25 4
gpt4 key购买 nike

我可以将一个进程的输出重定向到一个文件

./prog > a.txt

但是如果我删除 a.txt 并且不重新启动 prog,那么 a.t​​xt 中将不会有更多的输出。如果我使用追加重定向 >> 也是如此。

有没有办法让我的重定向重新创建在 prog 运行时删除的文件?

我认为重定向是操作系统的一部分,而不是 prog 的一部分。所以也许有一些工具或设置。

谢谢!

最佳答案

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

  • 存储在存储设备某处的内容;
  • 一个 i-node,保存除名称之外的所有文件信息;
  • 名称,列在目录中(也存储在存储设备上);
  • 当文件打开时,打开它的每个应用程序都会处理保存部分文件内容的内存缓冲区。

所有这些都是关联的,操作系统会保留它们的预订。

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

如果删除文件,而 ./prog 继续运行并产生输出,文件会增长并使用存储介质上的空间,但无法再次打开,因为无法访问它。只有当它被删除时已经打开它的程序在关闭它之前仍然可以访问该文件。

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

当它的输出被重定向时,除了重新启动 ./prog 之外,没有办法说服它在 a.txt 时将其输出存储在不同的文件中已删除。

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

关于linux - 输出重定向应该重新创建目标文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50226469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com