Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib/python3.7/site-packages/logilab/common/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/logilab/common/__pycache__/daemon.cpython-37.pyc

B

�d{T	
�@sZdZdZddlZddlZddlZddlZddlZddlZddlm	Z	dd�Z
d
dd	�ZdS)z!A daemonize function (for Unices)zrestructuredtext en�N)�rangecCs�yddlm}|t|��}Wn(tk
rDddlm}||�}YnXttd�rbt�|j|j	�nFddl
}|�d��|j|j	�dkr�|j�
|jd�j}t|t�|�d��t�|j	�t�|j�|jtjd<dS)zRChange process user and group ID

    Argument is a numeric user id or a user namer)�getpwuid)�getpwnam�
initgroupsN�errno�HOME)�pwdr�int�
ValueErrorr�hasattr�osr�pw_name�pw_gid�ctypes�CDLL�c_int�in_dll�	pythonapi�value�OSError�strerror�setgid�setuid�pw_uid�pw_dir�environ)�userr�passwdrr�err�r�F/opt/alt/python37/lib/python3.7/site-packages/logilab/common/daemon.py�setugids
r!�?cCst��rdSt��t��r dSt�d�t�dtj�}xRtd�D]F}yt�||�WqBtk
r�}z|j	t	j
krv�Wdd}~XYqBXqBWt�|�t�
d�|r�tj�|�}tj�|�s�t�|�t|d�}|�tt����|��|dk	r�t�|�|�r
t|�dS)	z�daemonize a Unix process. Set paranoid umask by default.

    Return 1 in the original process, 2 in the first fork, and None for the
    second fork (eg daemon process).
    ���/z	/dev/null�N�ignore�w)r�fork�setsid�chdir�open�O_RDWRr�dup2rr�EBADF�close�warnings�filterwarnings�path�dirname�exists�makedirs�file�write�str�getpid�umaskr!)Zpidfile�uidr;�null�i�eZpiddir�frrr �	daemonize6s6	





rA)NNr")�__doc__�
__docformat__rr�signal�sys�timer1Z	six.movesrr!rArrrr �<module>s