得到它了。我的脚本中的错误是我在每次调用时都创建了一个新的文件描述符:
fcntl.flock(open('/tmp/locktest', 'r'), fcntl.LOCK_EX | fcntl.LOCK_NB)
(...)
fcntl.flock(open('/tmp/locktest', 'r'), fcntl.LOCK_EX | fcntl.LOCK_NB)
相反,我必须将文件对象分配给变量,然后尝试锁定:
f = open('/tmp/locktest', 'r')
fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
(...)
fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
比起我想看到的例外,我也得到了更多IOError: [Errno 11] Resource temporarily unavailable
。现在,我必须考虑在什么情况下使用fcntl才有意义。