1

コンピューターでアクティブなプロセスを取得し、特定のプロセスを検索しようとしています。存在する場合は、それを強制終了する必要があります。実行の特定のパスを知らなくても実行できますか? 実行プロセス名はわかっていますが、フル パスはわかりません。

要するに:

  1. すべてのアクティブなプロセスを取得します。
  2. 特定のプロセスを強制終了します。

ありがとう!

4

3 に答える 3

0

AFAIKには、Qt固有の方法がないため、ネイティブプラットフォームAPIを使用する必要があります。どのプラットフォーム(Widnows、Unix、MacOS)に興味がありますか?

編集:MSDNプロセス関数リファレンスを見てください: http : //msdn.microsoft.com/en-us/library/ms684847(v = VS.85).aspx、特にEnumProcesses、OpenProcess、TerminateProcess。私はこのAPIを自分で使用したことがないので、コードスニペットは提供しません(ブックマークしただけです)。

于 2010-04-12T17:39:34.973 に答える
0

MacOS または BSD を使用している場合は、 sysctl APIを使用してすべてのプロセスを一覧表示できます。

Linux では、ソース コードで psがどのように処理されているかを確認するのが最善の方法のようです。これは、基本的に/procファイル システムをナビゲートすることです。

于 2010-04-15T01:08:04.217 に答える
0

言われたように、win apiを使用してWindowsで比較的簡単に実行できます:すべてのプロセスの列挙とプロセスの終了

Linux の場合、 QProcessを使用して "ps -A" のように実行し、その標準出力を解析することができます。次のようにします。

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();
}

これにより、実行中のプロセスのリストが返されるはずです。必要なデータを取得するために、psのさまざまなコマンド ライン オプションを試すことができます。プロセスの強制終了も同じ方法で実行できると思います。kill [pid]を実行して

これにより、続行する方法についてのアイデアが得られることを願っています、よろしく

于 2010-04-13T02:30:30.573 に答える