U
    |±Ëh¢  ã                   @   s&   d dl Z d dlZdd„ Zddd„ZdS )é    Nc              	   C   s’   | ddh™} zdd„ t  d¡D ƒ}W n6 tk
rZ   ddl}| |j¡d }t|ƒ™}Y nX ||  D ](}zt  |¡ W qd tk
rŠ   Y qdX qddS )z8Close all the file descriptors except those in keep_fds.é   é   c                 S   s   h | ]}t |ƒ’qS © )Úint)Ú.0Úfdr   r   úK/tmp/pip-unpacked-wheel-9qhk7zno/joblib/externals/loky/backend/fork_exec.pyÚ	<setcomp>   s     zclose_fds.<locals>.<setcomp>z/proc/self/fdr   N)	ÚosÚlistdirÚFileNotFoundErrorÚresourceZ	getrlimitZRLIMIT_NOFILEÚrangeÚcloseÚOSError)Úkeep_fdsZopen_fdsr   Zmax_nfdsÚir   r   r   Ú	close_fds   s    r   c                 C   sD   |pi }t j|–}t  ¡ }|dkr<t|ƒ t  tj| |¡ n|S d S )Nr   )r
   ÚenvironÚforkr   ÚexecveÚsysÚ
executable)Úcmdr   ÚenvZ	child_envÚpidr   r   r   Ú	fork_exec!   s    
r   )N)r
   r   r   r   r   r   r   r   Ú<module>   s   