如何在Python中执行C stdio.h read()

2024-10-01 13:45:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

我正试图用Python实现同样的目标。你知道吗

以下内容不起作用,并挂起在读取时。你知道吗

stream = os.fdopen(4, "r")
stream.read()

同样的问题

os.read(4, 100)

我甚至试着把文件描述符改成非阻塞的。你知道吗

有什么方法可以像Python中的Cstdio.hread()那样做吗?你知道吗

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

编辑-已解决

程序在另一个文件描述符上有另一个可写流。 将输入流更改为无缓冲(即it is open)并将0作为第三个参数传递给os.fdopen后,问题就解决了


Tags: 文件数据方法用户程序readstreamstring
2条回答

我必须使它非阻塞,然后使用选择投票。你知道吗

fcntl.fcntl(4, fcntl.F_SETFL, os.O_NONBLOCK)
poller = select.poll()
poller.register(o, select.POLLIN)
if poller.poll():
    print(o.read())

在python中,open()返回一个文件描述符,最常用于两个参数:open(filename,mode)。你知道吗

>>> f = open('workfile', 'r+')
>>> f.write('0123456789abcdef')
>>> f.seek(5)      # Go to the 6th byte in the file
>>> f.read(1)

相关问题 更多 >