交互式 Python 解释器在后台运行

she*_*idp 5 python linux bash

在后台启动交互式 python 控制台时,我遇到了一个奇怪的问题。从后台恢复解释器后,它不显示我输入的任何文本(即它只显示 >>> 提示,尽管它会解释我写的任何内容。按 [enter] 创建另一个 >>> 提示线)。

重现问题的一种简单方法是键入:

python &
fg
Run Code Online (Sandbox Code Playgroud)

如果在前台启动程序,将其置于后台,然后返回到前台,则不会出现此问题:

python
[ctrl-z]
bg
fg
Run Code Online (Sandbox Code Playgroud)

如果您想知道为什么要在后台启动交互式解释器,请考虑以下场景:

我有一个需要很长时间才能运行的模拟,但完成后,我想与结果进行交互。于是,我开始了这个程序:

python -i simulation.py &
fg #(after it's finished running)
Run Code Online (Sandbox Code Playgroud)

简单的解决方案是在前台启动它,将它移动到后台,然后将它带到前台,但我只是想知道为什么会发生这种情况。

Ale*_*off 2

将解释器置于前台后,请考虑执行以下命令以强制终端 ECHO 模式:

import termios
attr = termios.tcgetattr(1)
attr[3] = attr[3] | termios.ECHO
termios.tcsetattr(1, termios.TCSANOW, attr)
Run Code Online (Sandbox Code Playgroud)