我希望使用 twisted 来控制主进程和一组从进程之间跨 Linux 管道(os.pipe())和 fifos(os.mkfifo())的通信。虽然我很肯定,可以将twisted 用于这些类型的文件描述符(毕竟,twisted 非常适合*nix 抽象为文件描述符的tcp 套接字),但我找不到这种用法的任何示例。有人有任何链接、示例代码或建议吗?
问问题
2868 次
2 回答
12
您可以使用reactor.spawnProcess
它在父进程和它产生的子进程之间设置任意文件描述符映射。例如,要运行一个程序并为其提供两个额外的输出描述符(除了 stdin、stdout 和 stderr),它可以将字节发送回父进程,您可以执行以下操作:
reactor.spawnProcess(protocol, executable, args,
childFDs={0: 'w', 1: 'r', 2: 'r', 3: 'r', 4: 'r'})
反应器将为您创建管道,并在从中读取数据时调用childDataReceived
您ProcessProtocol
传入的数据。有关详细信息,请参阅spawnProcess API 文档。
如果您还在子端使用 Twisted,那么您最想查看twisted.internet.stdio
. 核心示例中的 stdiodemo.py 和 stdin.py将向您展示如何使用该模块。
于 2010-01-15T13:42:33.620 回答
-3
它没有任何内置的异步 I/O。有人给它写了一个libaio wrapper,但是好久没动了,不知道还能不能用。
在最坏的情况下,你可以用它select
来查看是否有任何东西可供阅读,但这对你写作没有帮助。
于 2010-01-15T03:27:50.863 回答