2015-05-27 7 views
1

Возможно ли перезапустить приложение qt после его сбоя? Как и те службы Windows, которые будут перезагружаться самостоятельно. Если да, то как я могу это сделать? Я попробовал такой код:Как перезапустить приложение qt после сбоя?

#define RESTART_CODE 1000 
int main(int argc, char *argv[]) 
{ 
    int return_from_event_loop_code; 
    QPointer<QApplication> app; 
    QPointer<MainWindow> main_window; 
    do 
    { 
    if(app) delete app; 
    if(main_window) delete main_window; 

    app = new QApplication(argc, argv); 
    main_window = new MainWindow(app); 
    return_from_event_loop_code = app->exec(); 
    } 
    while(return_from_event_loop_code==RESTART_CODE) 

    return return_from_event_loop_code; 
} 

Но это не работает ... Что я должен делать?

+1

Обычно подход здесь должен иметь какой-то процесс сторожевого. Он должен быть независим от процесса сбоя, очевидно –

+0

Вы * можете * сделать это в Windows (искать «структурированную обработку исключений»), но в целом это не отличная идея - что, если ваше приложение рушится при его запуске? Он может легко застревать в цикле старта/аварии/запуска. – MrEricSir

+0

Ваш код не будет работать, если ваше приложение выйдет из строя из-за ошибки сегментации ... – Venemo

ответ

1

создать другое приложение qt, которое запускает ваше приложение.

#include <QApplication> 
#include "QProcess" 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    QProcess aProcess; 
    QString exe = "Your process name with exact path"; 
    QByteArray myOut; 
    while(1) 
    { 
     aProcess.start(exe); 
     //aProcess.waitForStarted(); 
     //myOut = aProcess.readAllStandardOutput(); 
     //printf("%s",myOut.constData()); 
     aProcess.waitForFinished(-1); 

     //QString output(aProcess.readAllStandardOutput()); 

     myOut = aProcess.readAllStandardOutput(); 
     printf("%s",myOut.constData()); 
    } 
    enter code here 
    return a.exec(); 
} 

эта программа будет перезапустить приложение, когда он упал или закрыт

Смежные вопросы