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

2024-06-01 14:25:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个python应用程序,它将在unix管道中交互使用。应用程序应该启动一个基于curses的终端UI,并且基于用户交互,只在退出之前写入标准输出。在

典型用途是典型管道:

foo_command | my_application | sink_app

我遇到的问题是python诅咒库在应用程序运行时向stdout发送各种各样的信息。此外,sink_appmy_application运行时开始执行。在

  • 如何防止诅咒污染stdout?在
  • 当我想刷新输出时,如何缓冲输出和控制?在
  • 是否可以控制sink_app何时开始执行以及何时停止接受输入?在

根据我收集到的信息,我需要保存对stdout文件描述符的引用,以便以后可以对其进行写入。再传一个fd(哪一个?)去ncurses。应该是通过newterm(),但在python curses绑定上不可用。在


Tags: 用户信息app应用程序终端ui标准管道
1条回答
网友
1楼 · 发布于 2024-06-01 14:25:59

您可以通过使用^{}函数直接打开终端来管理屏幕,同时为管道保留stdout,来完成这项工作(在管道中设置curses应用程序)。^{}程序执行此操作。在

但是Python curses接口没有newterm(它只有^{},它使用stdout作为屏幕…),虽然可能有一些解决方法(在Python中,处理I/O流),但是这个论坛上的任何一个答案都没有提到这个问题。在

相关问题 更多 >