Python 在 linux 上生成分离的非 python 进程?

Python spawn detatched non-python process on linux?

我打算制作一个启动器应用程序,但我还没有找到一种方法将子进程完全从生成 python 进程中分离出来。

当我使用桌面(cinnamon 的)启动器启动程序时,进程树如下:

/sbin/init -> mdm -> mdm -> cinnamon-session -> cinnamon -> the-app-i-launched

在我阅读的线程中,这个是最多的 insightful/helpful:Launch a completely independent process。但是当 OP 正在寻找 运行 python 代码时,得到的答案却很模糊,这通常可以通过许多通常首选的方式来实现,而不是通过产生一个独立的进程。

来自 stack overflow 的其他帖子未回答如何启动分离的 python 进程:

我唯一可行的解​​决方案,可能是不可移植的 Linux-only 是使用 shell 评估和 shell-detach-ampersand 语法。

#!/usr/bin/env python2
import os

os.system('{cmd} &'.format('firefox'))

虽然在 window 管理器会话之外,这可能会在进程树上走得太远,可能不会随桌面会话一起退出。

/sbin/init -> firefox

可以在 JonMc 的回答 here 中找到可行的解决方案。我用它来打开文档 'xdg-open'.

如果您不需要日志文件,可以将 stderr 参数更改为 stderr=open('/dev/null', 'w'),