2012-08-03 54 views
1

使用reactor.spawnProcess時,它如何附加到傳入協議的讀通道?即我可以通過SSHProcessProtocol併產生bash併發送ls並獲得響應。我明白它通過調用childDataReceived等轉儲信息..但它是如何得到ls?我不能從這裏看到反應堆是如何連接標準桿的http://twistedmatrix.com/documents/12.1.0/api/twisted.internet.interfaces.IProcessProtocol.htmlTwisted ProcessProtocol讀取通道

+0

'.spawnProcess()'接受任何提供'IProcessProtocol'的東西。什麼是問題? – jfs 2012-08-03 05:41:49

回答

1

這聽起來像是一個關於實現如何工作的問題。接口顯然不是關於實現的。他們描述了一個API,並留下了實際將該API工作到其他代碼的所有細節。因此,界面IProcessProtocol的定義/文檔不會告訴你有關實現如何工作的任何信息。

對於IProcessProtocol,這是IProcessTransport,恰好有傳輸的大致兩種實現。運輸實際上負責Twisted世界中的I/O。協議是解析和序列化邏輯去的地方,爲應用程序提供高級接口,而不是拋出字節字符串。

POSIX的一種實現方式是twisted.internet.process。另一個用於Windows,位於twisted.internet._dumbwin32proc。這些是您應該檢查其來源以瞭解實現如何工作的模塊。