簡體   English   中英

使用flock時是否需要鎖定文件是全局的

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM