我有一个专有的程序,可以执行一个用户提供的程序作为子进程.父进程将一些有用的数据写入文件描述符4。
在C程序中,可以使用以下方法读取文件描述符中的数据:
s_count = read(4, &string_var[0], 100);
我正在尝试使用Python来完成同样的任务。
下面的内容无法工作,并挂在读取处。
stream = os.fdopen(4, "r")
stream.read()同样的问题
os.read(4, 100)我甚至尝试将文件描述符更改为非阻塞。
有没有办法只做C stdio.h read()在Python中所做的事情?
==============================================
编辑-解决了
该程序在不同的文件描述符上有另一个可写流。该问题在未缓冲的输入流更改后得到解决,即它是开放的,将0作为第三个参数传递给os.fdopen。
发布于 2017-04-06 08:58:23
在python ()中,返回一个文件描述符,最常用的是两个参数: open(filename,mode)。
>>> f = open('workfile', 'r+')
>>> f.write('0123456789abcdef')
>>> f.seek(5) # Go to the 6th byte in the file
>>> f.read(1)发布于 2017-04-06 10:07:17
我必须让它非阻塞,然后使用选择投票。
fcntl.fcntl(4, fcntl.F_SETFL, os.O_NONBLOCK)
poller = select.poll()
poller.register(o, select.POLLIN)
if poller.poll():
print(o.read())https://stackoverflow.com/questions/43250201
复制相似问题