我的程序正在从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是正确的方法吗?在这种情况下,我怎么能杀死这个过程?或者我应该用其他东西简单地开始?
答案 0 :(得分:1)
您可以将startDetached用于startx和存储进程pid。 If the function is successful then *pid is set to the process identifier of the started process.
答案 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参数的命令