【发布时间】:2019-06-02 23:42:46
【问题描述】:
因此,我处于一个进程连续(每隔几秒钟)将数据写入文件(不附加)的情况。数据为json格式。现在另一个进程必须定期读取这个文件。现在可能是读取过程在写入过程写入文件时读取它。
我能想到的解决这个问题的方法是让写入进程也写入相应的校验和文件。读取器进程现在必须读取文件及其校验和文件。如果计算的校验和不匹配,读取器进程将重复该过程,直到计算的校验和匹配。这样,现在它就知道它已经读取了正确的数据。
或者也许更好的解决方案是在一定时间后(远小于写入过程的写入间隔)读取文件两次,并查看读取的数据是否匹配。
第三种方法可能是在文件末尾写入一些魔术数据,以便读取过程知道它已经读取了整个文件,如果它在末尾遇到了魔术数据。
你怎么看?这些解决方案是否可行,或者有更好的方法来实现吗?
【问题讨论】:
-
writer进程的代码你写吗?如果是,您可以尝试制作一个信号量文件,当您想读取时,您正在“锁定”该文件,并且写入进程在读取之前无法写入。
-
我认为这需要锁定,正如@PierreEmmanuelLallemant 所说。您可以利用flock。
-
您需要实现锁定。