我正在尝试运行放置在 SBC6845 [在 /ftest 中,如图所示] 内的 C++ 可执行文件。现在这些可执行文件正在运行
while(1){
// around 250-300 lines of code here
}
无限循环。现在,当我只从终端运行代码时,我可以随时杀死它们。但是我无法在从 gui 内部运行时杀死它们。我使用 Qprocess 执行这些代码,如下所示:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow){
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(pressed()), SLOT(vcm_test()));
connect(ui->pushButton_2, SIGNAL(pressed()), SLOT(offloader_test()));
connect(ui->pushButton_3, SIGNAL(pressed()), SLOT(quit_vcm()));
connect(ui->pushButton_4, SIGNAL(pressed()), SLOT(quit_offloader()));}
void MainWindow::vcm_test(){
QProcess::execute("/ftest/vcm_test_2 \r\n");
}
void MainWindow::offloader_test(){
QProcess::execute("/ftest/off_test_2 \r\n");
}
void MainWindow::quit_vcm(){
QProcess::execute("\x001a \r\n");
}
void MainWindow::quit_offloader(){
QProcess::execute("\x001a \r\n");
}
现在的问题是当pushbutton或pushbutton_2即vcm_test()
或被offloader_test()
调用时,gui 变得无响应。由于 gui 一直在等待 /ftest 中的代码完成退出选项不起作用,我必须再次从终端退出。从终端退出也会关闭代码和 gui。
我也尝试过搜索解决方案并使用过线程。但是从按钮启动线程时出现分段错误。
我需要能够在执行过程中退出该过程(非常感谢修改此代码或任何新想法)。我是新手,所以请忽略我糟糕的编码技能。谢谢。