C++ 仅在Windows下,在QProcess内调用execv会触发finished()信号

C++ 仅在Windows下,在QProcess内调用execv会触发finished()信号,c++,qt,C++,Qt,我写这个例子是为了说明linux和windows在进程处理方面的差异 我的主应用程序通过调用QProcess::start启动一个子应用程序。如果此子进程通过在Windows下调用execv\u execv重新启动自身,则仅在Windows下的顶部应用程序上触发完成信号。就我而言,这是出乎意料的 有没有办法避免这个信号,或者这是一个QProcess错误 马修 包括主窗口 包括ui_main window.h 包括 MainWindow::MainWindowQWidget*父项: QMainWi

我写这个例子是为了说明linux和windows在进程处理方面的差异

我的主应用程序通过调用QProcess::start启动一个子应用程序。如果此子进程通过在Windows下调用execv\u execv重新启动自身,则仅在Windows下的顶部应用程序上触发完成信号。就我而言,这是出乎意料的

有没有办法避免这个信号,或者这是一个QProcess错误

马修

包括主窗口 包括ui_main window.h 包括 MainWindow::MainWindowQWidget*父项: QMainWindowparent, uinewui::主窗口 { ui->setupUithis; 连接用户界面->按钮启动,点击信号,此,插槽启动; 连接界面->按钮重新启动,点击信号,此,插槽重新启动; 连接和维护过程、信号完成力、QProcess::ExitStatus、, 这个,SLOT finishedint,QProcess::ExitStatus; m_process.setProcessChannelMode QProcess::MergedChannel; } MainWindow::~MainWindow { 删除用户界面; } 无效的 主窗口::开始 { m_process.start qPrintable QApplication::applicationFilePath; } 无效的 主窗口::重新启动 { char*argv[2]; argv[0]=strdup QApplication::applicationFilePath.toStdString.c_str; argv[1]=NULL; execv qPrintable QApplication::applicationFilePath,argv; } 无效的 主窗口::完成 int exitCode, QProcess::ExitStatus ExitStatus {
qDebug Windows并没有完全等同于Unix exec的功能。在Windows上,一个进程结束,另一个进程启动;在Unix上,只有一个进程。