我建立了一个小例子,我希望它能抛出异常,因为我先锁定文件,然后立即尝试再次锁定:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import fcntl
fcntl.flock(open('/tmp/locktest', 'r'), fcntl.LOCK_EX)
try:
fcntl.flock(open('/tmp/locktest', 'r'), fcntl.LOCK_EX | fcntl.LOCK_NB)
except IOError:
print("can't immediately write-lock the file ($!), blocking ...")
else:
print("No error")
但是这个例子只会打印出“无错误”。
如果我将这段代码分成两个同时运行的客户端(一个锁定然后等待,另一个尝试在第一个锁定已经激活后再次锁定),我得到了相同的行为 - 没有任何影响。
这种行为的解释是什么?
编辑:
根据nightcracker的要求进行更改,此版本也会打印出“无错误”,尽管我不会期望那样:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import fcntl
import time
fcntl.flock(open('/tmp/locktest', 'w'), fcntl.LOCK_EX | fcntl.LOCK_NB)
try:
fcntl.flock(open('/tmp/locktest', 'w'), fcntl.LOCK_EX | fcntl.LOCK_NB)
except IOError:
print("can't immediately write-lock the file ($!), blocking ...")
else:
print("No error")