python - 使用带有文件描述符的 Python Twisted 的示例

标签 python pipe twisted file-descriptor mkfifo

我希望使用 twisted 来控制主进程和一组从属进程之间跨 Linux 管道 (os.pipe()) 和 fifos (os.mkfifo()) 的通信。虽然我很肯定 twisted 可以用于这些类型的文件描述符(毕竟,twisted 非常适合 *nix 抽象为文件描述符的 tcp 套接字),但我找不到此类用法的任何示例。有人有任何链接、示例代码或建议吗?

最佳答案

您可以使用 reactor.spawnProcess 在父进程和它生成的子进程之间设置任意文件描述符映射。例如,要运行一个程序并为其提供两个额外的输出描述符(除了 stdin、stdout 和 stderr),它可以将字节发送回父进程,您可以这样做:

reactor.spawnProcess(protocol, executable, args,
                     childFDs={0: 'w', 1: 'r', 2: 'r', 3: 'r', 4: 'r'})

reactor 将负责为您创建管道,并在从中读取数据时调用您传入的 ProcessProtocol 上的 childDataReceived。查看spawnProcess API docs了解详情。

如果您还在子端使用 Twisted,那么您主要希望查看 twisted.internet.stdiocore examples 中的 stdiodemo.py 和 stdin.py将向您展示如何使用该模块。

关于python - 使用带有文件描述符的 Python Twisted 的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2069262/

相关文章:

python - 无需按下按钮即可执行命令

Python Generator 内存对大量读数有好处吗?

使用三个 execlp 创建两个管道 C 系统编程某处出现小错误

python - 如何通过 SSH 为 Python CLI 应用程序提供服务

python - 是否可以将 Tornado 的 gen.engine 和 gen.Task 与扭曲一起使用?

python - pandas read_csv 最后一列包含逗号

jquery - 斜纹 - 如何选择多个具有相同名称的选择

cmd - zstd:错误 70:写入错误:管道损坏(无法写入解码 block )

c 编程 - 一位 parent 和 4 个 child 之间的双向沟通​​没有结果

python - Twisted:如何隐式传递参数?