1

ソケットを使用して他のプログラムからコンソールにアクセスできるように、ゲーム サーバー プロセスを 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)

UNIX ソケットに接続できserver.sockますが、サーバーが出力を期待しているときにデータが読み取られません。

4

1 に答える 1

1

の戻り値を無視することはできませんsock.accept()。タプルを返します。最初の項目は接続されたソケットオブジェクトです。sockこれは、(場合によっては複数の)接続を受け入れることだけを目的とするとは異なります。makefile()元のではなく、この接続されたソケットオブジェクトを呼び出す必要がありますsock

于 2013-03-09T21:17:49.477 に答える