qt - 崩溃后如何重新启动qt应用程序?

标签 qt

是否可以在崩溃后重新启动 qt 应用程序?就像那些会自行重启的windows服务一样。如果是这样,我该怎么做?我试过这样的代码:

#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;
}

但是没有效果... 我现在该怎么办?

最佳答案

创建另一个运行您的应用程序的 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());
    }
    return a.exec();
}

此程序会在您的应用程序崩溃或关闭时重新启动

关于qt - 崩溃后如何重新启动qt应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30489644/

相关文章:

macos - 没有应用程序包的 QT 命令行可执行二进制文件有 Macdeployqt 吗?

c++ - qt 线程与 movetothread

qt - QML QtCharts CandlestickSeries 中继器

qt - Qt Creator 中的非 Qt 控制台应用程序

javascript - Qt访问Websql数据库

c++ - Qt 5.2.0 ftp 和 QNetworkAccessManager

Qt区分两个键盘? (一个实际上是RFID阅读器)

c++ - QT 程序在 connect() 后崩溃

qt - 如何禁用 QTableWidget 滚动到选定的单元格?

c++ - 由于 Qt moc,在头文件中包含头文件