如何让Python启动的安卓模拟器在Python终止后保持运行?
解决Python启动夜神模拟器后,代码终止模拟器不关闭的问题
我来帮你搞定这个问题!你遇到的情况是因为Python启动的子进程默认会和父进程绑定,当Python退出时系统会把关联的子进程也杀掉。这里有几个靠谱的解决办法,亲测有效:
方法一:用subprocess.Popen设置独立进程标志
通过给subprocess.Popen添加Windows特有的进程创建标志,让模拟器进程彻底脱离Python的控制:
import subprocess import sys # 路径用原始字符串避免转义问题,或者把反斜杠写成\\ cmd = r'C:\Nox\bin\Nox.exe -clone:Nox' # CREATE_NEW_PROCESS_GROUP 创建独立进程组,DETACHED_PROCESS 让进程脱离控制台 subprocess.Popen( cmd, creationflags=subprocess.CREATE_NEW_PROCESS_GROUP | subprocess.DETACHED_PROCESS, shell=True ) sys.exit() # 此时退出Python,模拟器会继续运行
如果不想用shell=True(更安全的写法),可以把命令拆分成列表形式:
import subprocess import sys cmd = [r'C:\Nox\bin\Nox.exe', '-clone:Nox'] subprocess.Popen( cmd, creationflags=subprocess.CREATE_NEW_PROCESS_GROUP | subprocess.DETACHED_PROCESS ) sys.exit()
方法二:用Windows的start命令启动
利用Windows cmd自带的start命令,它会直接创建一个完全独立的进程,和Python彻底解绑:
import os import sys # 注意start后面的""是必填的标题参数,避免路径含空格时出错 os.system('start "" "C:\\Nox\\bin\\Nox.exe" -clone:Nox') sys.exit()
原理说明
本质上这两种方法都是让模拟器进程成为独立于Python父进程的进程,不再受Python退出的影响。而你之前直接用os.system或普通subprocess.Popen时,模拟器进程是Python的子进程,当Python终止时,系统会终止所有关联的子进程。
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

