在多个进程之间共享文件[Perl]

时间:2011-12-17 11:40:42

标签: perl process ipc

我有一个更新CSV文件的应用程序(单个),CSV正在从几个进程中随机更新,我想如果两个进程同时尝试更新它(添加一行......),一些数据会丢失,或者被覆盖(?)。

避免这种情况的最佳方法是什么?

感谢,

2 个答案:

答案 0 :(得分:6)

使用Perl的DBIDBD::CSV driver来访问您的数据;那将为你照顾flock。 (除非您使用的是Windows 95或旧的Mac OS。)如果您决定稍后切换到RDBMS,您将做好充分的准备。

@Fluff建议的简单flock当然也应该没问题。

答案 1 :(得分:0)

如果您想要一种简单且手动的方式来处理文件锁定。

1) As soon as a process opens the csv, it creates a lock.
  (Lock can be in the form of creating a dummy file. The process has to delete 
  the file(lock) as soon as it is done reading/updating the csv)
2) Have each process check for file lock before trying to update the csv.
 (If dummy file is present, some process is accessing the csv, 
  else it can update the csv)