如何为Python脚本使用2个Shell

问题描述

我有一个使用curses的python项目。我想打开另一个外壳来输送我的一些输出,我该如何实现呢?

说明:

我正在使用python的Curses模块编写TUI。因此,我最初的bash shell是curses窗口。

如果可以用于调试目的,我希望在另一个bash shell中提供实时更新的变量。

我要问的是,是否有办法使python程序打开另一个shell并将标准输出通过管道传递到该shell,而不是认的shell(在我的情况下是curses环境的窗口)。

解决方法

几种可能性。


启动第二个“终端”窗口,然后在其中运行:

tty
/dev/ttys000       # sample output - note down for next command

在运行curses的第一个终端中,执行以下操作:

echo "Hi" > /dev/ttys000

替代方法...用以下方法制作fifo:

mkfifo fifo

在第二个新终端中,运行:

while : ; do cat fifo; done

在第一个终端中,运行:

echo "Hi" > fifo

替代方法...尾部文件。

在您的curses终端中,将消息附加到文件:

echo "Message" >> log.txt

在另一个终端中,遵循日志文件的结尾:

tail -f log.txt