并行运行一个应用程序,同时用 C++ 启动另一个应用程序
parallely run an application while it starts another application in c++
我正在尝试编写一个可以在linux中使用c ++启动另一个应用程序的应用程序。启动另一个应用程序不是问题。我面临的问题是,父应用程序暂停,直到子应用程序关闭。我希望父应用程序与子应用程序一起运行,以便可以使用父应用程序的更多功能。我该怎么做?如果有人能给我一个想法,那对我有很大帮助。
该应用程序由两个文件主.cpp和一个虚拟机器人主.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");
}
}
主要.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 应用程序将无法工作。
如果您正在使用system
调用(或类似的方式调用 shell),则可以应用与终端中相同的逻辑来"在后台"启动进程:
system("./myProgram &");
// ^
// run in background
更好的选择包括fork
,尽管这实际上取决于您的具体要求,我们不知道。
#include <stddef.h>
#include <process.h>
int status = spawnl( P_NOWAIT, "myprog", "myprog", "ARG1", "ARG2", NULL );
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?