在c ++中启动另一个应用程序时,并行运行应用程序

时间:2014-01-01 13:26:56

标签: c++

我正在尝试编写一个可以在linux中使用c ++启动另一个应用程序的应用程序。启动另一个应用程序不是问题。我面临的问题是,父应用程序暂停,直到子应用程序关闭。我希望父应用程序与子应用程序一起运行,以便可以使用父应用程序的更多功能。我该怎么做呢? 如果有人能给我一个关于此的想法,那对我帮助很大。

该应用程序由两个文件main.cpp和一个virtualbotmain.cpp组成。

的一部分
 virtualbotmain.cpp: #include <iostream>
 #include <stdlib.h>
 VirtualBotMain::VirtualBotMain(QWidget *parent) :
  QWidget(parent),
ui(new Ui::VirtualBotMain)
{
    ui->setupUi(this);
}
void VirtualBotMain::on_enterButton_clicked()
{
QString enterString = ui->enterEdit->text();
ui->convoText->append("User: " + enterString);
ui->enterEdit->setText("");
if(enterString=="word")
{
    ui->convoText->append("Joe: done..!!");
    system("gedit");

}

}

main.cpp是:

#include <QtGui/QApplication>
#include "virtualbotmain.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
VirtualBotMain w;
w.show();

return a.exec();
}

这是一个GUI应用程序,可用于只键入我正在尝试打开的应用程序,应用程序将为我执行此操作。因此,尝试逐个打开许多应用程序会成为一个问题,因为GUI应用程序将无法工作,直到我关闭以前打开的应用程序。

2 个答案:

答案 0 :(得分:0)

如果您正在使用system调用(或类似的方式来调用shell),您可以应用您在终端中应用的相同逻辑来“在后台”启动进程:< / p>

system("./myProgram &");
//                  ^
//           run in background

更好的替代方案包括fork,但这实际上取决于您的具体要求,我们不知道。

答案 1 :(得分:0)

#include <stddef.h>
#include <process.h>

int status = spawnl( P_NOWAIT, "myprog", "myprog", "ARG1", "ARG2", NULL );
相关问题