/usr/lib/python3.9/site-packages/rhn/__pycache__
Edit: /usr/lib/python3.9/site-packages/rhn/__pycache__/rhnLockfile.cpython-39.pyc (3216B)
a
ÓXj. ã @ s† d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dlZG dd„ de ƒZ
G dd„ dƒZdd „ Ze
d
kr‚e eƒ p~d ¡ dS )é N)ÚEWOULDBLOCKÚEEXIST)Úbstrc @ s e Zd ZdZdS )ÚLockfileLockedExceptionz$thrown ONLY when pid file is locked.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r
r
ú3/usr/lib/python3.9/site-packages/rhn/rhnLockfile.pyr s r c @ s* e Zd ZdZd dd„Zdd„ Zdd„ ZdS )
ÚLockfilezïclass 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 C s t j t j t j |¡¡¡| _|| _| js4t ¡ | _t j | j¡}t j |¡s”zt
|¡ W n6 ty’ t
¡ d }t|dƒrŒ|jtkrŒn‚ Y n0 t | jt jt jB t jB t jB t jB d¡| _t | j¡}t |j¡rè|jt ¡ krt | j¡ td| jt ¡ |j|jf ƒ‚| ¡ dS )zlcreate (if need be), and acquire lock on lockfile
lockfile example: '/var/run/up2date.pid'
é Úerrnoi€ zSrefusing to use lockfile %s: not a regular file owned by uid %d (mode 0o%o, uid %d)N) ÚosÚpathÚabspathÚ
expanduserÚ
expandvarsÚlockfileÚpidÚgetpidÚdirnameÚexistsÚmakedirsÚOSErrorÚsysÚexc_infoÚhasattrr r ÚopenÚO_RDWRÚO_CREATÚO_SYNCÚ
O_NOFOLLOWÚ O_CLOEXECÚfÚfstatÚstatÚS_ISREGÚst_modeÚst_uidÚgeteuidÚcloseÚacquire)Úselfr r r ÚeÚstr
r
r Ú__init__% sD
ÿÿ
ÿÿþþÿzLockfile.__init__c C sž zt | jt jt jB ¡ W nB ty\ t ¡ d jt krVt
d| j dt ¡ d ƒ‚n‚ Y n0 t | jt jd¡ t
| jd¡ t
| jtt| jƒd ƒ¡ dS )z5acquire the lock; else raise LockfileLockedException.r
zcannot acquire lock on %s.Né r Ú
)ÚfcntlÚflockr$ ZLOCK_EXZLOCK_NBÚIOErrorr r r r r r ZF_SETFDr Ú ftruncateÚwriter Ústrr )r- r
r
r r, ^ s ÿzLockfile.acquirec C s| z4t | j¡}t | j¡}|j|jko0|j|jk}W n tyJ d}Y n0 |r\t | j¡ t
| jt j¡ t | j¡ d S )NF)
r r% r$ Úlstatr Úst_devÚst_inor Úunlinkr3 r4 ZLOCK_UNr+ )r- Zfd_stZpath_stZ
same_inoder
r
r Úreleaseo s
ÿ
zLockfile.release)N)r r r r r0 r, r= r
r
r
r r s
9r c C sx zt dƒ} W n4 ty@ tj dt ¡ d ¡ t d¡ Y n40 tdƒ tdƒ ddl}| d ¡ |
¡ td
ƒ dS )z test codez
./test.pidz%s
r
éÿÿÿÿzlock acquired z...sleeping for 10 secondsr Né
zlock released )r r r Ústderrr7 r ÚexitÚprintÚtimeÚsleepr= )ÚLrC r
r
r Úmain„ s
rF Ú__main__)r r r&