Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt Qprocess如何在不分离的情况下启动startx并收回控制权_Qt_Process_Qt4_Qt5_Qprocess - Fatal编程技术网

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

Qt Qprocess如何在不分离的情况下启动startx并收回控制权,qt,process,qt4,qt5,qprocess,Qt,Process,Qt4,Qt5,Qprocess,我的程序正在接收来自TCP套接字的命令,其中一个命令是“launch startx”,但它不应该阻止主进程继续,我尝试了startDetached,但将来我的应用程序应该能够终止程序,调用process->kill()似乎无法在分离的进程上运行,非分离的问题是,我的程序在使用startx启动其他命令之前等待QProcess终止。 有了终端,我想实现以下命令: startx& somecommands_that_need_startx fg Ctr_c 编辑:以下是我使用分离进程的pid

我的程序正在接收来自TCP套接字的命令,其中一个命令是“launch 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);
QString cmd;
QStringList-args;
cmd=“startx”;
args已开始详细说明(cmd、args、“/”、&pid_cur);
//p->execute(cmd,args);

std::cout您可以使用startDetached进行startx和存储过程pid。

您应该添加-9作为killer流程的参数:

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

QStringList args=QStringList()我已经尝试过了,但是存储的id不是真实的id(我试图杀死-9),也不是0。我正在发布代码。您是否检查了退出代码,您的startx实际上已经启动?常见的错误可能是您需要提供二进制文件的完整路径。For kill命令应该类似于:cmd=“/bin/kill”;args好的,startx命令实际上是有效的,因为我在主屏幕上进行了验证,kill命令似乎不起作用。看起来startDetached没有正确填充pid(或者QString没有正确解释这个数字)。您在cout输出中看到了什么pid?startx的实际pid是什么?你也能
qDebug()吗