概述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上的同一个文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容