linux 按下CTRL-D时阻止Python解释器退出

bkkx9g8r  于 2023-01-29  发布在  Linux
关注(0)|答案(1)|浏览(133)

我正在用python -i main.py运行一个脚本。这个脚本使用threading模块启动一些C线程和python线程,然后python代码结束并进入提示符。如果不小心按下了ctrl-d,我如何防止python退出?我不想不小心按下CTRL-D(已经发生了两次),然后交互式解释器突然与所有线程一起关闭。
我需要仍然可以访问交互式解释器。目标是启动C线程和Python线程,然后从Python监控它们。
我试着使用readline并将^D绑定到空值,但它仍然会终止python。
示例(main.py):

print("Init code for python thread")
print("Init code for c thread")

当用python -i main.py运行这个程序时,在第二行完成后,我得到提示>>>。如果我在提示符下按CTRL-D,它将启动一个systemExit。我想不惜一切代价防止这种情况发生。

m1m5dgzv

m1m5dgzv1#

如果你正在等待输入,那么你可以把输入调用封装在try/except中。记住Ctrl-D实际上是EOF。
因此,这可能是一个有用的模式:

while True:
    try:
        v = input('Type something: ')
        break
    except EOFError:
        print('You typed CTRL-D')

print(f'You typed {v}')

相关问题