gpt4 book ai didi

python - 使用 unix 套接字作为子进程 stdin、stdout、stderr

转载 作者:太空宇宙 更新时间:2023-11-03 19:03:43 24 4
gpt4 key购买 nike

我想用 Python 封装一个游戏服务器进程,这样我就可以使用套接字从其他程序访问控制台。我希望能够读取 stdout、stderr 并能够将数据发送到 stdin 以通过套接字与服务器进行通信。

到目前为止,我已经尝试过这样的事情:

sock = socket.socket(socket.AF_UNIX)
sock.setblocking(0)
sock.bind('server.sock')
sock.listen(5)
sock.accept()
fd = sock.makefile()

proc = subprocess.Popen(args, stdin=fd, stdout=fd, stderr=fd)

我可以连接到 server.sock unix 套接字,但当我期望服务器有输出时,不会读取任何数据。

最佳答案

您不能忽略 sock.accept() 的返回值:它返回一个元组,其中第一项是已连接套接字对象。它与 sock 不同,sock 的唯一目的是接受(可能是多个)连接。您需要在此连接的套接字对象上调用 makefile(),而不是在原始 sock 上。

关于python - 使用 unix 套接字作为子进程 stdin、stdout、stderr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15315197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com