首页 文章

如何使python curses应用程序管道友好?

提问于
浏览
0

我正在编写一个python应用程序,旨在以交互方式在unix管道中使用 . 应用程序应启动基于curses的终端UI,并根据用户交互,仅在退出之前写入标准输出 .

典型用法是典型的管道:

foo_command | my_application | sink_app

我遇到的问题是python curses库在应用程序运行时将各种各样的东西发送到stdout . 此外, sink_appmy_application 运行时开始执行 .

  • 如何防止curses污染stdout?

  • 当我想要冲洗它时,如何缓冲输出和控制?

  • 是否可以控制 sink_app 何时开始执行以及何时停止接受输入?

从我收集的内容中,我需要保存对stdout文件描述符的引用,以便稍后可以写入它 . 并将另一个fd(哪一个?)传递给ncurses . 据说通过newterm(),但这在python curses绑定上不可用 .

1 回答

  • 0

    你可以这样做(在 pipeline 中设置一个curses应用程序),使用newterm函数直接打开终端来管理屏幕,同时为管道保留stdout . dialog程序就是这样做的 .

    但是Python curses接口没有 newterm (它只有initscr,它使用stdout作为屏幕...),虽然可能有解决方法(在Python中,处理I / O流),但它没有被解决在这个论坛的任何答案 .

相关问题