使用Qt在不知道完整路径的情况下终止进程
我正在尝试检索计算机上的活动进程并搜索特定进程, 如果它存在,我就杀了它。 是否可以在不知道执行的具体路径的情况下执行? 我知道执行进程名,但不知道完整路径 简言之:使用Qt在不知道完整路径的情况下终止进程,qt,qprocess,Qt,Qprocess,我正在尝试检索计算机上的活动进程并搜索特定进程, 如果它存在,我就杀了它。 是否可以在不知道执行的具体路径的情况下执行? 我知道执行进程名,但不知道完整路径 简言之: 获取所有活动进程 杀死特定的进程 谢谢 AFAIK没有特定于Qt的方法来做您想要做的事情,所以您必须使用本机平台API。您对哪个平台(Widnows、Unix、MacOS)感兴趣 编辑: 查看MSDN流程函数参考:,特别是EnumProcess、OpenProcess和TerminateProcess。我不会给你任何代码片段,因为
谢谢 AFAIK没有特定于Qt的方法来做您想要做的事情,所以您必须使用本机平台API。您对哪个平台(Widnows、Unix、MacOS)感兴趣 编辑:
查看MSDN流程函数参考:,特别是EnumProcess、OpenProcess和TerminateProcess。我不会给你任何代码片段,因为我自己没有使用过这个API(我只是把它添加到了书签中)。就像上面所说的,你可以使用win API在windows上相对轻松地完成它:&& 对于linux,您可以尝试运行smth,比如“ps-A”,并解析其标准输出;smth是这样的:
QProcess process;
process.setProcessChannelMode(QProcess::MergedChannels);
process.start("ps", QStringList() << "-A");
if (!process.waitForStarted())
return;
if (!process.waitForFinished())
return;
//qDebug() << process.readAll();
QByteArray output = process.readLine().trimmed();
while (!output.isEmpty())
{
qDebug() << output;
QList<QByteArray> items = output.split(' ');
qDebug() << "pid:" << items.first() << " cmd:" << items.last();
qDebug() << "===============================================";
output = process.readLine().trimmed();
}
QProcess过程;
process.setProcessChannelMode(QProcess::MergedChannels);
process.start(“ps”,QStringList()如果您在MacOS或BSD上,您可以使用列出所有进程
在Linux上,您似乎能做的最好的事情就是查看在中是如何完成的,这基本上就是导航