为什么fcntl(... F_GETFL)返回的标志与用于通过os.open打开文件描述符的标志不同?

时间:2012-03-06 15:12:09

标签: python unix posix

我需要使用fcnlt F_GETFL检索open fd的标志。

import os
import fcntl
fd = os.open('/tmp/test', os.O_CREAT|os.O_RDWR, 0777)
print  fcntl.fcntl(fd, fcntl.F_GETFL)
print  os.O_CREAT|os.O_RDWR 

我得到:

第一次打印32770,第二次打印66次。 我期待从两个打印件获得相同的标志输出。 任何想法为何有区别? 多谢 -jfas

1 个答案:

答案 0 :(得分:0)

我正在使用Python 2.7,但我没有相同的结果:

>>> import os, fcntl
>>> fd = os.open('/tmp/test', os.O_CREAT|os.O_RDWR, 0777)
>>> print  fcntl.fcntl(fd, fcntl.F_GETFL)
2
>>> print  os.O_CREAT|os.O_RDWR 
514
>>> print  fcntl.fcntl(fd, fcntl.F_GETFL)
2
>>> print  os.O_CREAT
512
>>> print  os.O_RDWR
2

所以只有标志O_CREAT不再在这里了。打开后文件的状态仅为O_RDWR。