gpt4 book ai didi

java和python进程在linux上可以独占锁同一个文件

转载 作者:IT王子 更新时间:2023-10-29 00:36:14 26 4
gpt4 key购买 nike

我有一个 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 上,我对 python 使用 portolacker。

    lockfile =open(lockfilename, 'w+')
portalocker.lock(lockfile, portalocker.LOCK_EX| portalocker.LOCK_NB)

在 win7 上也能正常工作。

最佳答案

我从一位同事那里得到了答案,而且很简单。 Java 不使用 POSIX 锁,但 python 使用。所以他们不能互操作...


实际上他们可以,但前提是可以强制两个运行时使用相同的锁定机制。但这迫使您对其进行硬编码,从而使代码变得脆弱并且非常依赖于平台。

关于java和python进程在linux上可以独占锁同一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13247787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com