2

以下のコード スニペットに示すように、複数のスレッド (Qthreads) を使用してコマンド ライン プロセスを起動する Qt 内にコードを書いています。

void test_streamer_thread::run()
{
    QProcess    start_process;
    ...

    ret_status = start_process.execute("some_cmd.exe",some_args);
    start_process.close();
}

起動すると、プロセスは無限に続きます (Windows タスク マネージャーに別のプロセスとして表示されます)。ただし、アプリケーションが終了しても、プロセスは引き続き存在します。このプロセスを起動しているアプリケーションの終了時に、このプロセスが確実に終了するようにするにはどうすればよいですか。

4

2 に答える 2

0

スレッドを作成するのではなく、別のプロセスをフォークしているようです。

別のプロセスの場合は、親プロセスと子プロセスの間で何らかの通信(パイプまたはシグナルなど)を実行して、終了する必要があることを通知する必要があります。

スレッドの場合、プロセスを強制終了すると、すべてのスレッドがスレッドとともに停止します。さらに、Windowsタスクマネージャーではスレッドが個別のプロセスとして表示されることはありません(どのように表示されるかはわかりませんが、スレッドとしては表示されません)。

于 2012-07-10T12:37:14.450 に答える