ynn*_*ynn 5 command-line gnome-terminal signal
当您在gnome-terminal没有任何选项的情况下打开并执行阻止命令(例如python3,vim或cat),然后尝试通过关闭按钮(即x标题栏中的按钮)或某些键盘快捷键关闭窗口时,将显示一个确认窗口:
但是,当您gnome-terminal使用指定的执行命令打开时,即以 形式gnome-terminal -- python3打开时,确认窗口不再显示,并且在您(不小心)单击关闭按钮后立即关闭该窗口。
即使使用表格,是否也可以显示确认窗口gnome-terminal -- <command>?如果这是不可能的,是否有任何解决方法?
环境:
$ gnome-terminal --version
# GNOME Terminal 3.36.2 using VTE 0.60.3 +BIDI +GNUTLS +ICU +SYSTEMD
Run Code Online (Sandbox Code Playgroud)
我试过的:
为所有支持的信号配备信号处理程序的执行命令不起作用;尽管该过程在捕获SIGHUP(三次),SIGCONT(一次)和SIGWINCH(一次)时在关闭过程中幸存下来,但在没有确认的情况下仍然关闭了窗口。我还必须执行kill -SIGKILL <process id>以终止该进程。
我发现了一个例外。执行 时gnome-terminal -- bash,会显示确认信息(尽管默认情况下与 相同gnome-terminal)。
GNOME 终端检查是否有 shell 启动的前台进程(请参阅terminal_screen_has_foreground_process函数)
您可以使用 sh 创建新进程并使用 gnome-terminal 在退出前进行询问:
gnome-terminal -- sh -i -c python3
Run Code Online (Sandbox Code Playgroud)
更新:使用自定义脚本使用 bash 可以达到相同的效果:
gnome-terminal -- bash -i my_script.sh
Run Code Online (Sandbox Code Playgroud)
的内容my_script.sh只是
python3
Run Code Online (Sandbox Code Playgroud)