PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` 3 UZc @s~ddlZddlZddlZddlmZmZddlmZddlZGdddeZ GdddZ dd Z e d krzej e pvddS) N) EWOULDBLOCKEEXIST)bstrc@seZdZdZdS)LockfileLockedExceptionz$thrown ONLY when pid file is locked.N)__name__ __module__ __qualname____doc__r r !/usr/lib/python3.6/rhnLockfile.pyrsrc@s*eZdZdZd ddZddZddZdS) Lockfilezclass that provides simple access to a PID-style lockfile. methods: __init__(lockfile), acquire(), and release() NOTE: currently acquires upon init The *.pid file will be acquired, or an LockfileLockedException is raised. Nc Cstjjtjjtjj||_||_|js4tj|_tjj|j}tjj |sytj |Wn8t k rt j d}t|dr|jtkrnYnXtj|jtjtjBtjB|_|jdS)zlcreate (if need be), and acquire lock on lockfile lockfile example: '/var/run/up2date.pid' errnoN)ospathabspath expanduser expandvarslockfilepidgetpiddirnameexistsmakedirsOSErrorsysexc_infohasattrrropenO_RDWRO_CREATO_SYNCfacquire)selfrrrer r r __init__$s"   zLockfile.__init__c Csytj|jtjtjBWnDtk r^tjdjt krXt d|j dtjdnYnXtj|jtj dt j|jdt j|jtt|jddS)z5acquire the lock; else raise LockfileLockedException.r zcannot acquire lock on %s.Nr )fcntlflockr"ZLOCK_EXZLOCK_NBIOErrorrrrrrrZF_SETFDr ftruncatewriterstrr)r$r r r r#EszLockfile.acquirecCs,tj|jtj|jtjtj|jdS)N)runlinkrr)r*r"ZLOCK_UNclose)r$r r r releaseVs zLockfile.release)N)rrrr r&r#r1r r r r r s !r c Cszy td}Wn6tk rBtjjdtjdtjd Yn4Xtdtdddl}|j d|j td dS) z test codez ./test.pidz%s r zlock acquired z...sleeping for 10 secondsrN zlock released ) r rrstderrr-rexitprinttimeZsleepr1)Lr7r r r main]s  r9__main__)rrr)rrrZrhn.i18nr Exceptionrr r9rr5r r r r s B