我正在使用python fcntl模块对文件应用记录锁定。当我使用来自ubuntu(VM)的脚本执行命令时,它的工作正常但是当从rhel运行脚本时它没有按预期工作。
以下是我的代码:
file = open(FILE, "a")
lockData = struct.pack('hhhh', fcntl.F_WRLCK, 0, 0, 0)
而True:
try:
fcntl.fcntl(file, lockCmd, lockData)
for i in range(50):
file.seek(0)
file.write(sys.argv[3]+" : "+str(i)+"\n")
time.sleep(0.1)
file.close() # unlocks the file
break
except IOError, err:
print "Error : %s" % err
我的期望是在运行此脚本的两个实例时,然后第一个将执行锁定,而另一个将抛出错误,直到从第一个实例调用close()。这种行为是在ubuntu中实现的,但不是在rhel中实现的。
任何人都可以帮忙吗?