我有以下python代码:
os.system("C:/Python27/python.exe C:/GUI/TestGUI.py")
sys.exit(0)
它运行命令正常,弹出一个窗口。但是,它不会退出第一个脚本。它只是停留在那里,我最终不得不强行杀死这个过程。没有错误产生。发生了什么事?
答案 0 :(得分:16)
而不是os.system
使用subprocess.Popen
这会运行命令并且不等待它然后退出:
import subprocess
import sys
subprocess.Popen(["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"])
sys.exit(0)
请注意os.system(command)
喜欢:
p = subprocess.Popen(command)
p.wait()
答案 1 :(得分:0)
import sys ,subprocess
subprocess.Popen(["C:/Python27/python.exe", "C:/GUI/TestGUI.py"])
sys.exit(0)
从子进程模块打开您要查找的内容。
答案 2 :(得分:0)
我建议使用os._exit
而不是sys.exit
,因为sys.exit不会退出程序但会引发异常级别,或者退出线程。 os._exit(-1)
退出整个计划
答案 3 :(得分:0)
KeyboardInterrupts和信号只能由进程看到(即主线程)。如果嵌套命令由于某种文件读取或写入块而挂起,则无法使用任何键盘命令退出程序。
Why does a read-only open of a named pipe block?
如果无法消除磁盘块的来源,那么一种方法是将进程包装在线程中,这样就可以强制终止它。但是如果你这样做,你就有机会在磁盘上留下半写和损坏的文件。