【问题标题】:Subprocess terminating when Python exits when using disown in i3在 i3 中使用 disown 时 Python 退出时子进程终止
【发布时间】:2016-09-30 14:57:23
【问题描述】:

我目前有以下设置:

在 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 来查看它是否启动,是的,它确实启动了 - 但在终端关闭后终止。

但是,如果我启动 firefoxghetto-skype,它们会终止,但是,xfce4-terminal 在“菜单”关闭后不会终止!

甚至很奇怪 - 如果我从 xfce4 终端(而不是 i3)启动脚本,子进程也不会终止!

我对正在发生的事情感到非常困惑,希望能帮助我理解它,并防止xfce4-terminal 以外的进程在菜单完成后关闭。

【问题讨论】:

    标签: python linux process


    【解决方案1】:

    您没有重定向标准输入。我猜当xfce4-terminal 关闭时它会得到一个EOF。

    【讨论】:

    • 工作了,但是由于某种原因,我还需要在system 之后添加一个time.sleep(0.1)...我会接受答案,但请为以后的访问者添加这个答案
    • 更新:即使睡眠时间较长,eclipse 也无法使用,终端关闭后立即关闭...
    • @TheSuperCuber 请注意,一旦您自己找到解决方案,您就可以回答自己的问题。
    • @dorukayhan 如果我找到解决方案
    猜你喜欢
    • 2014-08-16
    • 2017-04-21
    • 2019-06-03
    • 1970-01-01
    • 2012-09-28
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多