Java和python进程可以独占locking在linux上的同一个文件

Java和python进程可以独占locking在linux上的同一个文件,第1张

概述Java和python进程可以独占locking在linux上的同一个文件

我有一个Java应用程序和一个python启动器。 Java应用程序locking一个文件,以避免使用此代码的多个启动:

java.nio.channels.fileLock lock = lockWrapper.getChannel().tryLock(); if (lock == null) { logger.info("Anotheris already running"); } lock.release(); staticLock = lockWrapper.getChannel().lock();

python启动器试图用fcntllocking同一个文件,它可以。 两个java进程不能做到这一点,两个python进程都不能locking在同一个文件上。 但是,一个Java和一个Python可以在任何方向。 我在一个openjdk 6和python2.7的xubuntu我使用Pythonock的门户网站。

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

在win7上也能正常工作。

从tomcat服务器的webapp调用java程序 – java程序在tomcat服务器的外面

在Ubuntu 9.10中安装play-framework

在linux上使用Java 6,我该如何确保使用一个ipv4套接字?

在Ubuntu中安装eclipse 3.8中的maven

专门用于windows的java库

线程“main”中的exceptionjava.lang.NoClassDefFoundError:org / apache / hadoop / util / Platformname

在Java Web应用程序中获取windowslogin详细信息

在任何情况下使用C#检索Java安装目录

httpClIEntBuilder的基本身份valIDation

为什么paintComponent从不叫?

我从同事那里得到了答案,这很简单。 Java不使用POSIX锁,但Python。 所以他们不能互相 *** 作

事实上,他们可以,但只有当一个人可以迫使两个运行时使用相同的锁定机制。 但是这会迫使你对代码进行硬编码,使得代码变得脆弱而且非常依赖于平台。

这对我在linux el6上适用。 使用fileLock和Python 2.6的Oracle Java 7可以正确地锁定文件。 编辑:使用F_SETLKW阻塞/等待 *** 作。

Python代码不可移植。 这在我的环境中不是问题。

import fcntl,struct,time f = open("/tmp/TestLock","w") lockdata = struct.pack('hhllhh',fcntl.F_WRLCK,0) unlockdata = struct.pack('hhllhh',fcntl.F_UNLCK,0) while True: try: fcntl.fcntl(f.fileno(),fcntl.F_SETLK,lockdata) print "Lock held" time.sleep(5) except IOError as ex: print "Lock Failed: "+ex.strerror if ex.errno == 11: time.sleep(0.5) else: break continue else: fcntl.fcntl(f.fileno(),unlockdata)

参考: https : //docs.python.org/2/library/fcntl.HTML搜索页面的SVR4(底部)

参考: https : //community.dur.ac.uk/physics.astrolab/file_locking.HTML

总结

以上是内存溢出为你收集整理的Java和python进程可以独占locking在linux上的同一个文件全部内容,希望文章能够帮你解决Java和python进程可以独占locking在linux上的同一个文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1155612.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存