这是一个与我所处的实际情况无关的问题,但它总是让我烦恼。
如果我有一个脚本在一个文本文件中读取和追加行,而另一个脚本从同一个文件中读取,会出现什么问题?
我知道当一个脚本打开一个文本文件时,它从该文件打开的那一刻开始使用该文件的版本,而不考虑下面的编辑。我希望这两个脚本都能使用文本文件的最新版本(我不会实时查看)。
我想提出问题的一种方法是:处理这些脚本的最佳方法是什么?我应该何时关闭并打开第一个文件?
答案 0 :(得分:0)
您可能遇到的一个问题是当另一个进程尝试访问该文件时,该文件被一个进程锁定。为避免这种情况,您应该打开,读入整个文件(或写入新行)并立即关闭它。
同样,您可能希望在打开时添加错误处理,如果由于文件被锁定而失败,则可以在短暂停顿后再次尝试。
答案 1 :(得分:0)
我知道当脚本打开文本时 文件它正在使用的版本 从那时起该文件 打开,不考虑跟随 编辑
这是错误的陈述。例如,在Unix中尝试以下命令:
tail -f <some file>
然后尝试在该文件中添加行。 tail
命令将跟随您的添加。 (假设你在写作时定期做flush
)。
答案 2 :(得分:0)
tail命令可以执行您想要的操作,否则您需要打开,编辑,保存,关闭一个脚本,然后另一个脚本打开,读取,关闭等等。脚本必须轮流