2010-04-26 48 views
2

我試圖讓Python的插座工作作爲替代調用命令行socat。的Python:Unix套接字 - >破管

這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') 

任何想法的問題是什麼?謝謝。

+0

你正在使用哪個版本的python。我正在嘗試使用python 2.7 /3.3創建一個unix套接字客戶端程序。但它說AF_UNIX不被支持。你可以幫我嗎 ? – Balamurugan 2013-07-10 06:16:28

回答

4

你的echo | socat行和你的Python代碼有一個明顯的區別,那就是echo增加的換行符,但是你不會發送你的Python代碼。我看不出如何可能導致管道故障錯誤。你的基本方法看起來很好,當我在本地測試時它工作正常。你確定服務器進程沒有在這裏做額外的事情嗎?你確定它仍在監聽,並且因爲某種原因沒有關閉插座的另一端?

+1

謝謝,這是換行符。 – 2010-04-26 21:50:58

0

我是有這個問題,它結束了,我的代碼腳本時工作得很好 - 但交互工作時有一個破裂的管道。我想有一個超時或什麼的。