1

使用 reactor.spawnProcess 时,它如何附加到传入协议的读取通道?即,我可以传入 SSHProcessProtocol 并生成 bash 并发送ls并获得响应。我知道它通过调用 childDataReceived 等转储信息。但它是如何得到的ls?我从这里看不到反应器如何连接标准输入http://twistedmatrix.com/documents/12.1.0/api/twisted.internet.interfaces.IProcessProtocol.html

4

1 回答 1

1

这听起来像是一个关于实现如何工作的问题。接口明确与实现无关。他们描述了一个 API,并将实际使该 API 工作的所有细节留给其他代码。因此,接口的定义/文档IProcessProtocol不会告诉您有关实现如何工作的任何信息。

恰好有大约两种传输的实现IProcessProtocol,即IProcessTransport. 传输负责在 Twisted 世界中实际执行 I/O。协议是解析和序列化逻辑所在,它为应用程序提供比抛出字节字符串更高级别的接口。

对于 POSIX,一种实现是在twisted.internet.process. 另一个,对于 Windows,在twisted.internet._dumbwin32proc. 这些是您应该检查源代码的模块,以便了解实现的工作原理。

于 2012-08-03T13:43:56.610 回答