过去,我看到所有打开的文件描述符的虚拟文件都出现在/ dev / fd中.但是,当前我正在使用Amazon Linux,并且在Python程序中运行os.pipe()时看不到新的文件描述符.例如:MASTER:hadoop@imrdasem2d14$ls -l /dev/fd/tot...

过去,我看到所有打开的文件描述符的虚拟文件都出现在/ dev / fd中.但是,当前我正在使用Amazon Linux,并且在Python程序中运行os.pipe()时看不到新的文件描述符.
例如:
MASTER:hadoop@imrdasem2d14$ls -l /dev/fd/
total 0
lrwx------ 1 hadoop hadoop 64 Jul 23 15:39 0 -> /dev/pts/0
lrwx------ 1 hadoop hadoop 64 Jul 23 15:39 1 -> /dev/pts/0
lrwx------ 1 hadoop hadoop 64 Jul 23 15:39 2 -> /dev/pts/0
lr-x------ 1 hadoop hadoop 64 Jul 23 15:39 3 -> /proc/30933/fd
MASTER:hadoop@imrdasem2d14$%
python
>>> import os
>>> a,b = os.pipe()
>>> c,d = os.pipe()
>>>
[2]+ Stopped python
MASTER:hadoop@imrdasem2d14$!ls
ls -l /dev/fd/
total 0
lrwx------ 1 hadoop hadoop 64 Jul 23 15:39 0 -> /dev/pts/0
lrwx------ 1 hadoop hadoop 64 Jul 23 15:39 1 -> /dev/pts/0
lrwx------ 1 hadoop hadoop 64 Jul 23 15:39 2 -> /dev/pts/0
lr-x------ 1 hadoop hadoop 64 Jul 23 15:39 3 -> /proc/31001/fd
MASTER:hadoop@imrdasem2d14$
但是很明显,管道正在运行:
a,b,c,d
(3, 4, 5, 6)
>>> os.write(b,b"foo")
3
>>> os.read(a,3)
b'foo'
那么为什么我的3、4、5和6的文件描述符不在/ dev / fd中?
解决方法:
/ dev / fd的内容是特定于进程的.您正在查看的是ls进程的文件描述符,而不是Python进程的文件描述符.
让您的Python进程检查内容:
os.listdir('/dev/fd')
例如:
>>> import os
>>> os.listdir('/dev/fd/')
['0', '1', '2', '3']
>>> a,b = os.pipe()
>>> os.listdir('/dev/fd/')
['0', '1', '2', '3', '4', '5']
>>>
沃梦达教程
本文标题为:python-Linux:os.pipe()中的文件描述符未出现在/ dev / fd中


基础教程推荐
猜你喜欢
- python中列表添加元素的几种方式(+、append()、ext 2022-09-02
- notepad++ 在windows 下 实现python运行 2023-09-04
- Python之路-Python中的线程与进程 2023-09-04
- python time时间库详解 2022-08-30
- 亲手教你用Python打造一款摸鱼倒计时界面 2023-08-08
- 使用Python解析JSON详解 2023-09-04
- python数据结构输入输出及控制和异常 2023-08-08
- windows10 Python2和Python3共存 2023-09-04
- Centos环境下 Python2.7 换成 Python3.7 运行 scrapy 应用所遇到的问题记录 2023-09-04
- 详解Pytorch中的tensor数据结构 2022-10-20