Python:unix socket - >破管

时间:2010-04-26 21:31:37

标签: python sockets

我正在尝试使用Python套接字作为调用命令行socat的替代方法。

这个socat命令工作正常:

echo 'cmd' | sudo socat stdio <path-to-socket>

但是当我运行这个python代码时,我收到一个错误:

>>> import socket
>>> s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
>>> s.connect(<path-to-socket>)
>>> s.send('cmd')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
socket.error: (32, 'Broken pipe')

任何想法是什么问题?感谢。

2 个答案:

答案 0 :(得分:4)

您的echo | socat行和Python代码之间存在一个明显的区别,那就是echo添加的换行符,但您不会发送Python代码。我不知道这怎么可能导致管道损坏。您的基本方法似乎很好,当我在本地测试时它工作正常。你确定服务器进程没有在这里做额外的事情吗?你确定它还在听吗,例如,出于某种原因没有关闭套接字的另一端吗?

答案 1 :(得分:0)

我遇到了这个问题,结果是我的代码在脚本中工作正常 - 但是在交互式工作时遇到了损坏的管道。我猜有超时或其他什么。