File: //lib/python3/dist-packages/supervisor/__pycache__/pidproxy.cpython-312.pyc
�
���f� � �\ � d Z ddlZddlZddlZddlZ G d� d� Zd� Zedk( r e� yy)a pidproxy -- run command and proxy signals to it via its pidfile.
This executable runs a command and then monitors a pidfile. When this
executable receives a signal, it sends the same signal to the pid
in the pidfile.
Usage: %s <pidfile name> <command> [<cmdarg1> ...]
� Nc �4 � e Zd ZdZd� Zd� Zd� Zd� Zd� Zd� Z y)�PidProxyNc � � |d |dd c| _ }t j j |d � | _ || _ y # t t f$ r( | j � t j d� Y y w xY w)N� � r )�pidfile�os�path�abspath�abscmd�cmdargs�
ValueError�
IndexError�usage�sys�exit)�self�argsr
s �5/usr/lib/python3/dist-packages/supervisor/pidproxy.py�__init__zPidProxy.__init__ sf � � �$(��G�T�!�"�X�!�D�L�'��'�'�/�/�'�!�*�5�D�K�"�D�L���J�'� ��J�J�L��H�H�Q�K� �s �>A �4A8�7A8c �D � | j � t j t j | j | j
� | _ t j d� t j dt j � d }|ry �A# t $ r d }Y �w xY w)N� ���r )�
setsignalsr �spawnv�P_NOWAITr r
�pid�time�sleep�waitpid�WNOHANG�OSError)r r s r �gozPidProxy.go s{ � ������9�9�R�[�[�$�+�+�t�|�|�D�����J�J�q�M�
��j�j��R�Z�Z�0��3�� �� �� �
���
�s �&'B �B�Bc �J � t t t j d z � y )Nr )�print�__doc__r �argv�r s r r zPidProxy.usage) s � �
�g������#�$� c � � t j t j | j � t j t j | j � t j t j | j � t j t j
| j � t j t j | j � t j t j | j � t j t j | j � y �N)
�signal�SIGTERM�passtochild�SIGHUP�SIGINT�SIGUSR1�SIGUSR2�SIGQUIT�SIGCHLD�reapr( s r r zPidProxy.setsignals, s� � ��
�
�f�n�n�d�&6�&6�7��
�
�f�m�m�T�%5�%5�6��
�
�f�m�m�T�%5�%5�6��
�
�f�n�n�d�&6�&6�7��
�
�f�n�n�d�&6�&6�7��
�
�f�n�n�d�&6�&6�7��
�
�f�n�n�d�i�i�0r) c � � y r+ � )r �sig�frames r r5 z
PidProxy.reap5 s � �r) c � � t | j d� 5 }t |j � j � � }d d d � t
j |� |t j t j t j fv rt j d� y y # 1 sw Y �gxY w# t d| j z � Y y xY w)N�rzCan't read child pidfile %s!r )�openr �int�read�stripr% r �killr, r- r0 r3 r r )r r8 r9 �fr s r r. zPidProxy.passtochild9 s� � � ��d�l�l�C�(�
,�A��!�&�&�(�.�.�*�+��
,�
����S���6�>�>�6�=�=�&�.�.�A�A��H�H�Q�K� B�
,�
,�� ��0�4�<�<�?�@��s"