使用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上,您似乎能做的最好的事情就是查看在中是如何完成的,这基本上就是导航