在Linux上使用运行在mono上的C#代码时,注意以下代码在Windows上可以跨进程锁定文件,但在Linux上通过mono(ubuntu 14.04)无法实现。
new FileStream("myfile.lock",FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.None);
从互联网上的研究来看,我应该可以使用咨询锁来完成这项任务。
FileStream.Lock
然而,它无法正常工作。在Ubuntu 14.04上测试了两个进程,它们都可以执行"FileStream.Lock(0, int.MaxValue)"。根据源代码,我本来希望后一个进程会因异常而失败。是否有任何解决方案?
FileStream.Lock
(通过Mono) 使用fcntl
的F_SETLK
。 - SushiHangover