Код | import fcntl, time
f = open("test", "w") fcntl.lockf(f, fcntl.LOCK_EX) f.write( str(time.time()) + "\n" ) time.sleep(10) fcntl.lockf(f, fcntl.LOCK_UN) f.close()
|
Запускаю это скрипт. Должна поставиться блокировка файл test на 10 сек. В это время открываю питон:
Код | >>> f=open("test") >>> f <open file 'test', mode 'r' at 0xb7d4d698> >>>
|
Никаких ошибок не выдает. Блокировка не работает? Что делаю не правильно?
И второй ворос. Где можно посмотреть что означаю все эти константы? ( взято из help(fcntl) ) В документации оп питону не нашел.
Цитата | DN_ACCESS = 1 DN_ATTRIB = 32 DN_CREATE = 4 DN_DELETE = 8 DN_MODIFY = 2 DN_MULTISHOT = -2147483648 DN_RENAME = 16 FD_CLOEXEC = 1 F_DUPFD = 0 F_EXLCK = 4 F_GETFD = 1 F_GETFL = 3 F_GETLEASE = 1025 F_GETLK = 12 F_GETLK64 = 12 F_GETOWN = 9 F_GETSIG = 11 F_NOTIFY = 1026 F_RDLCK = 0 F_SETFD = 2 F_SETFL = 4 F_SETLEASE = 1024 F_SETLK = 13 F_SETLK64 = 13 F_SETLKW = 14 F_SETLKW64 = 14 F_SETOWN = 8 F_SETSIG = 10 F_SHLCK = 8 F_UNLCK = 2 F_WRLCK = 1 I_ATMARK = 21279 I_CANPUT = 21282 I_CKBAND = 21277 I_FDINSERT = 21264 I_FIND = 21259 I_FLUSH = 21253 I_FLUSHBAND = 21276 I_GETBAND = 21278 I_GETCLTIME = 21281 I_GETSIG = 21258 I_GRDOPT = 21255 I_GWROPT = 21268 I_LINK = 21260 I_LIST = 21269 I_LOOK = 21252 I_NREAD = 21249 I_PEEK = 21263 I_PLINK = 21270 I_POP = 21251 I_PUNLINK = 21271 I_PUSH = 21250 I_RECVFD = 21262 I_SENDFD = 21265 I_SETCLTIME = 21280 I_SETSIG = 21257 I_SRDOPT = 21254 I_STR = 21256 I_SWROPT = 21267 I_UNLINK = 21261 LOCK_EX = 2 LOCK_MAND = 32 LOCK_NB = 4 LOCK_READ = 64 LOCK_RW = 192 LOCK_SH = 1 LOCK_UN = 8 LOCK_WRITE = 128
|
|