1

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

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

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.sockunix 套接字,但是当我期望服务器有输出时,没有读取任何数据。

4

1 回答 1

1

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

于 2013-03-09T21:17:49.477 回答