Your IP : 216.73.216.213
B
���]� � @ sN d Z ddlZddlZddlZddlZdd� ZG dd� d�ZG dd� de�ZdS ) z�
ForkedFunc provides a way to run a function in a forked process
and get at its return value, stdout and stderr output as well
as signals and exitstatusus.
� Nc sB t t|�d�� | � �� kr*t�� �� | � G � fdd�d�}|� S )N�wc s$ e Zd Z� fdd�Z� fdd�ZdS )z$get_unbuffered_io.<locals>.AutoFlushc s � � |� � �� d S )N)�write�flush)�self�data)�f� �G/opt/alt/python37/lib/python3.7/site-packages/py/_process/forkedfunc.pyr s
z*get_unbuffered_io.<locals>.AutoFlush.writec s
t � |�S )N)�getattr)r �name)r r r �__getattr__ s z0get_unbuffered_io.<locals>.AutoFlush.__getattr__N)�__name__�
__module__�__qualname__r r r )r r r � AutoFlush s r )�open�str�fileno�os�dup2)�fd�filenamer r )r r �get_unbuffered_io s
r c @ s@ e Zd ZdZddd�Zdd� Zejfdd �Zd
d� Z dd
� Z
dS )�
ForkedFunc� Nr c C s� |d krg }|d kri }|| _ || _|| _tjj�� | _}|�d�| _ |�d�| _
|�d�| _t�
� }|rt|| _nd | _| �|||� d S )N�retval�stdout�stderr)�fun�args�kwargs�py�path�local�mkdtemp�tempdirZensure�RETVAL�STDOUT�STDERRr �fork�pid�_child) r r r r �
nice_level�child_on_start�
child_on_exitr% r* r r r �__init__ s zForkedFunc.__init__c
C s� t d| j� t_}t d| j� t_}| j�d�}d}z�|rDt� |� y@|d k rT|� | j
| j| j�}|�
t�|�� |d k r�|� W n. tj�� } |�
t| �� �� | j}Y nX W d |�� |�� |�� X t�d� t�d� t�|� d S )N� � �wbr )r r'