Qt Qprocess如何启动startx并在不分离的情况下收回控制权

时间:2014-07-15 09:36:37

标签: qt process qt4 qt5 qprocess

我的程序正在从TCP套接字接收订单,其中一个是"启动startx"但它不应该让主要过程继续下去,我尝试使用startDetached但是将来我的应用程序应该可以杀死该程序,并且调用process->kill()似乎不会在分离的情况下工作进程中,非分离的问题是我的程序在使用startx启动其他命令之前等待QProcess终止。 这里有一个终端是我想要实现的命令:

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是正确的方法吗?在这种情况下,我怎么能杀死这个过程?或者我应该用其他东西简单地开始?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

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

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

使用&#34; cmd -9&#34; QProcess尝试启动&#34; cmd -9&#34;作为一个命令而不是带-9参数的命令