Qt进程如何启动startx和收回控制权,而不分离



我的程序正在接收来自TCP套接字的订单,其中一个是"启动startx",但它不应该切断主进程的继续,我尝试了startDetached,但在未来我的应用程序应该能够杀死程序,调用process->kill()似乎不能在一个分离的进程上工作,非分离的问题是我的程序等待QProcess在使用startx启动其他命令之前终止。对于终端,下面是我想要实现的命令:

startx&
somecommands_that_need_startx
fg
Ctr_c

编辑:这是我尝试过的,使用分离进程的pid:

   QString cmd;
QStringList args;
cmd = "startx";
args << "";
qint64 pid_cur;
    p->startDetached(cmd,args,"/",&pid_cur);
    //p->execute(cmd,args);
    std::cout << "pid_cur : " << QString::number(pid_cur).toStdString();
//then in a console i have tried kill -9 pid_cur it told me pid_cur didnt exist
    p->waitForFinished(-1);
//some command
    QProcess killer;
    std::cout << QString::number(pid).toStdString() << std::endl;
    QString cmd;
    QStringList args;
    cmd = "kill -9 ";
    args << QString::number(pid);
    killer.startDetached(cmd,args);

那么你认为startdetached是正确的方法吗?在这种情况下,我如何终止该进程?或者我应该用别的东西作为简单的开头吗?

您可以使用startDetached作为startx和存储进程pid。如果函数成功,则*pid设置为已启动进程的进程标识符。

你应该添加-9作为你的杀手级进程的参数:

QString cmd="kill";
QStringList args = QStringList() << "-9" << QString::number(pid);
killer.startDetached(cmd, args);

当你使用"cmd -9" QProcess试图启动"cmd -9"作为一个命令,而不是一个命令与-9参数

相关内容

  • 没有找到相关文章

最新更新