我目前有以下设置:
在 i3 配置中:
bindsym $mod+d exec xfce4-terminal --title="Supermenu" -e "path/to/supermenu"
for_window [title="Supermenu"] floating enable
它执行的脚本是一个 Python 脚本可执行文件(使用 shebang 和 chmod +x),其中有这一行(在许多其他行中,与它无关):
os.system(command + " >/dev/null 2>&1 &")
我的期望是,当 Python 脚本退出时,command
调用的进程应该保持运行,因为 &
。但是,一旦 xfce4-terminal 退出,它仍然会退出! (这发生在脚本明显终止之后)。
我也试过在最后加上 disown
和在开头加上 nohup
,两者都没有区别。
我可以确认它在脚本退出时发生,因为我尝试使用 time.sleep
来查看它是否启动,是的,它启动了 - 但在终端关闭后终止。
但是,如果我启动 firefox
或 ghetto-skype
,它们会终止,但是 xfce4-terminal
不会“菜单”关闭后终止!
甚至很奇怪 - 如果我从 xfce4 终端(而不是 i3)启动脚本,子进程也不会终止!
我对发生的事情感到非常困惑,如果能帮助我理解它,并防止 xfce4-terminal
以外的进程在菜单关闭后关闭,我将不胜感激。
最佳答案
您没有重定向标准输入。我猜它在 xfce4-terminal
关闭时得到一个 EOF。
关于python - 在 i3 中使用 disown 时 Python 退出时子进程终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39794457/