c-Python:如何编写fd 3



在C中,我可以像这样写入文件描述符3:

$ cat write.c 
#include <unistd.h>
int main(void) {
write(3, "written in fd 3n", 16);
}

然后我可以调用该程序并将fd 3重定向到fd 1(stdin(,如下所示:

$ ./write 3>&1
written in fd 3

我如何在python中做到这一点?我检查了os.open(),但它从文件系统中的一个文件中创建了一个文件描述符(显然我无法选择要分配哪个文件描述符(,os.fdopen()从文件描述符(使用os.open()创建(中创建了文件对象。那么,我该如何选择文件描述符编号呢。

我试过了:

with os.fdopen(3, 'w+') as fdfile:

但它给了我:

OSError: [Errno 9] Bad file descriptor

编辑:这是我的python程序:

$ cat fd.py
import os
with os.fdopen(3, 'w+') as fdfile:
fdfile.write("written to fd 3n")
fdfile.close()

这是我运行它时的结果:

$ python fd.py 3>&1
Traceback (most recent call last):
File "fd.py", line 3, in <module>
with os.fdopen(3, 'w+') as fdfile:
File "/usr/lib/python3.8/os.py", line 1023, in fdopen
return io.open(fd, *args, **kwargs)
io.UnsupportedOperation: File or stream is not seekable.

在对os.fdopen的调用中将"w+"更改为"w"。这就是导致"不可查找"错误的原因。+告诉它打开它阅读和写作,这是不起作用的。

您的代码应该可以工作。但就像运行C程序一样,您必须首先重定向FD3。

python write.py 3>&1

相关内容

  • 没有找到相关文章

最新更新