我有一个 java 应用程序和一个 python 启动器。Java 应用程序使用以下代码锁定文件以避免多次启动:
java.nio.channels.FileLock lock = lockWrapper.getChannel().tryLock();
if (lock == null) {
logger.info("Anotheris already running");
}
lock.release();
staticLock = lockWrapper.getChannel().lock();
python 启动器尝试使用 fcntl 锁定同一个文件,它可以。两个 java 进程不能这样做,两个 python 进程都不能独占锁定同一个文件。但是 java 和 python 可以在任何方向。我在使用 openjdk 6 和 python2.7 的 xubuntu 上,我将 portalocker 用于 python。
lockfile =open(lockfilename, 'w+')
portalocker.lock(lockfile, portalocker.LOCK_EX| portalocker.LOCK_NB)
在win7上也能正常工作。