【问题标题】:Python: unix socket -> broken pipePython:unix 套接字-> 损坏的管道
【发布时间】:2010-04-26 21:31:36
【问题描述】:

我正在尝试让 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')

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

【问题讨论】:

  • 你使用的是哪个版本的python。我正在尝试使用 python 2.7 /3.3 创建一个 unix 套接字客户端程序。但它说不支持 AF_UNIX。你能帮我吗?

标签: python sockets


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我遇到了这个问题,结果是我的代码在脚本中运行良好 - 但在交互工作时管道损坏。我猜是超时什么的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2011-11-04
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      相关资源
      最近更新 更多