首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Python实现Cstdio.hread()

如何用Python实现Cstdio.hread()
EN

Stack Overflow用户
提问于 2017-04-06 08:49:18
回答 2查看 535关注 0票数 0

我有一个专有的程序,可以执行一个用户提供的程序作为子进程.父进程将一些有用的数据写入文件描述符4。

在C程序中,可以使用以下方法读取文件描述符中的数据:

s_count = read(4, &string_var[0], 100);

我正在尝试使用Python来完成同样的任务。

下面的内容无法工作,并挂在读取处。

代码语言:javascript
复制
stream = os.fdopen(4, "r")
stream.read()

同样的问题

代码语言:javascript
复制
os.read(4, 100)

我甚至尝试将文件描述符更改为非阻塞。

有没有办法只做C stdio.h read()在Python中所做的事情?

==============================================

编辑-解决了

该程序在不同的文件描述符上有另一个可写流。该问题在未缓冲的输入流更改后得到解决,即它是开放的,将0作为第三个参数传递给os.fdopen

EN

回答 2

Stack Overflow用户

发布于 2017-04-06 08:58:23

在python ()中,返回一个文件描述符,最常用的是两个参数: open(filename,mode)。

代码语言:javascript
复制
>>> f = open('workfile', 'r+')
>>> f.write('0123456789abcdef')
>>> f.seek(5)      # Go to the 6th byte in the file
>>> f.read(1)
票数 0
EN

Stack Overflow用户

发布于 2017-04-06 10:07:17

我必须让它非阻塞,然后使用选择投票。

代码语言:javascript
复制
fcntl.fcntl(4, fcntl.F_SETFL, os.O_NONBLOCK)
poller = select.poll()
poller.register(o, select.POLLIN)
if poller.poll():
    print(o.read())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43250201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档