fd leak after embed
- 主要语言
- Python
- 星标
- 16.8k
- 派生
- 4.5k
- 平均合并
- 1 天 2 小时
- 30 天内合并 PR
- 6
描述
It seems like `IPython.embed` is not correctly restoring file descriptors after it exits.
Example script:
```python
import os, subprocess
def print_fd(pid=None):
if pid is None:
pid = os.getpid()
print('\npid = {}'.format(pid))
subprocess.call('ls -la /proc/{}/fd'.format(pid), shell=True)
print()
def main():
print('\nBefore')
print_fd()
from IPython import embed; embed()
print('\nAfter')
print_fd()
if __name__ == '__main__':
main()
```
Output
```console
$ python3 lala.py
Before
pid = 42928
total 0
dr-x------ 2 me me 0 May 27 22:09 .
dr-xr-xr-x 9 me me 0 May 27 22:09 ..
lrwx------ 1 me me 64 May 27 22:09 0 -> /dev/pts/2
lrwx------ 1 me me 64 May 27 22:09 1 -> /dev/pts/2
lrwx------ 1 me me 64 May 27 22:09 2 -> /dev/pts/2
Python 3.6.4 (default, Jan 24 2019, 05:49:39)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.5.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]:
Do you really want to exit ([y]/n)?
After
pid = 42928
total 0
dr-x------ 2 me me 0 May 27 22:09 .
dr-xr-xr-x 9 me me 0 May 27 22:09 ..
lrwx------ 1 me me 64 May 27 22:09 0 -> /dev/pts/2
lrwx------ 1 me me 64 May 27 22:09 1 -> /dev/pts/2
l-wx------ 1 me me 64 May 27 22:09 10 -> pipe:[2804779437]
lrwx------ 1 me me 64 May 27 22:09 2 -> /dev/pts/2
l-wx------ 1 me me 64 May 27 22:09 3 -> /dev/null
lrwx------ 1 me me 64 May 27 22:09 4 -> /home/me/.ipython/profile_default/history.sqlite
lrwx------ 1 me me 64 May 27 22:09 5 -> /home/me/.ipython/profile_default/history.sqlite
lrwx------ 1 me me 64 May 27 22:09 6 -> anon_inode:[eventpoll]
lr-x------ 1 me me 64 May 27 22:09 7 -> pipe:[2804779436]
l-wx------ 1 me me 64 May 27 22:09 8 -> pipe:[2804779436]
lr-x------ 1 me me 64 May 27 22:09 9 -> pipe:[2804779437]
```
贡献指南
评估
这个 Issue 还没有评估数据。