使用 reactor.spawnProcess 时,它如何附加到传入协议的读取通道?即,我可以传入 SSHProcessProtocol 并生成 bash 并发送ls
并获得响应。我知道它通过调用 childDataReceived 等转储信息。但它是如何得到的ls
?我从这里看不到反应器如何连接标准输入http://twistedmatrix.com/documents/12.1.0/api/twisted.internet.interfaces.IProcessProtocol.html
问问题
187 次
1 回答
1
这听起来像是一个关于实现如何工作的问题。接口明确与实现无关。他们描述了一个 API,并将实际使该 API 工作的所有细节留给其他代码。因此,接口的定义/文档IProcessProtocol
不会告诉您有关实现如何工作的任何信息。
恰好有大约两种传输的实现IProcessProtocol
,即IProcessTransport
. 传输负责在 Twisted 世界中实际执行 I/O。协议是解析和序列化逻辑所在,它为应用程序提供比抛出字节字符串更高级别的接口。
对于 POSIX,一种实现是在twisted.internet.process
. 另一个,对于 Windows,在twisted.internet._dumbwin32proc
. 这些是您应该检查源代码的模块,以便了解实现的工作原理。
于 2012-08-03T13:43:56.610 回答