读取被其他进程锁定的文件

时间:2013-08-09 10:01:08

标签: java perl file io

我怀疑一个perl进程是在一个文件中写入,并且java线程正在读取同一个文件。假设该线程在perl进程正在写入时访问该文件以读取它,那么线程将进入等待状态还是能够读取它。 然后它进入等待状态,它将返回运行状态还是永远等待状态。实际上2个不同的流程将如何实现。

嗨,其实我有两道工序。一个是perl进程,速度较慢,只要一个任务完成就会连续更新文件,以将该任务的状态更新为成功或失败。其他是Java进程,它从该文件中连续读取任务状态是成功还是失败。因此,由于java进程是快速进程(因为它不需要等待任何任务完成),所以现在将是什么情形。当文件被perl进程锁定以进行写入时,这个java线程是否会进入等待状态或终止状态。操作系统是linux。

1 个答案:

答案 0 :(得分:0)

如果要在读取文件的同时更新文件,最好以原子方式进行(以不同的名称编写新版本,然后合并其内容或稍后重命名)。

但是,您需要确保只有一个进程在任何给定的时间点更新它(在本例中为perl脚本),或者可能有race condition

您可能还想阅读unix file-locking一般。