我有一个名为test.exe
的程序。该程序是用python / pyqt4编写的。在代码的某个时刻,我想触发应用程序的重启,所以我需要创建一个独立于主进程运行的分离进程,以便激活程序并在之后立即关闭当前正在运行的程序。
问题在于,无论我如何尝试,它都不想工作。我没有尝试创建一个.bat文件,而是在超时后调用了exe(我向localhost添加了ping)。
如果我尝试执行一些其他程序,如notepad.exe的副本,它没有问题,但我无法找到解决方案,以重新启动一个应用程序。这是我的测试代码:
import os
import sys
import subprocess
from PyQt4 import QtGui, QtCore
if getattr( sys, 'frozen', False ):
ROOT_PATH = os.path.dirname( os.path.abspath( sys.executable ) )
elif __file__:
ROOT_PATH = os.path.dirname( os.path.abspath( __file__ ) )
class Example( QtGui.QWidget ):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI( self ):
qbtn = QtGui.QPushButton('Quit', self)
qbtn.clicked.connect( self.btn_clicked )
qbtn.resize(qbtn.sizeHint())
qbtn.move(50, 50)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Quit button')
self.show()
def btn_clicked( self ):
p = QtCore.QProcess()
p.setWorkingDirectory( ROOT_PATH )
p.startDetached( "start.bat" )
sys.exit( 0 )
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
使用pyinstaller编译exe
,在我的最终位置,我有text.exe
和start.bat
,如下所示:
ping 127.0.0.1 > "bat.txt"
start "" "%~dp0test.exe"
如果我在我的bat文件中将test.exe
替换为notepad.exe
则可行。
有任何想法吗?
答案 0 :(得分:0)
我最后编写了另一个正在监视文件出现的小exe(reset.txt)。重新启动时的主要exe是touching
文件然后退出。第二个exe作为守护进程运行,当它看到文件调用第一个exe时。
开放改善......