[英]Does lock file when using flock need to be global
我正在为单个实例设置cron作业。 下面的锁是否需要全局锁? 我相信是这样,以便在程序完成之前将其保留在范围内。 或至少在try / except块之外。 另外,Python的返回值应该是正数吗? 似乎-2在回显$上返回254? 猛扑
import time, fcntl, sys
LOCK_FILE = '/tmp/test_flock.lock'
lock = None
def do_wait():
print ('waiting N sec')
time.sleep(3)
def main(argv=None):
try:
global lock
lock = open(LOCK_FILE,'w')
fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB)
print ("got flock")
except IOError as err:
print ("Could not obtain lock file")
return -2
if argv is None:
argv = sys.argv
try:
print ('entering main')
print ('waiting')
# raise ValueError("Error raised")
do_wait()
print ('done')
except Exception as err:
print ("Exception in main")
return -1
if __name__ == '__main__':
sys.exit(main())
似乎-2在回显$上返回254? 猛扑
Bash将-2解释为254,可能是因为它处理负数的方式, 我相信这是通过返回8位无符号整数而实现的。
Soln:使用一个大于0但小于256的正整数。Bash会看到返回代码> 0作为错误。
下面的锁是否需要全局锁? 我相信是这样,以便在程序完成之前将其保留在范围内。
回答:如果与锁定文件没有其他冲突,我会说全局锁定很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.