【问题标题】:Qt5: how to batch process by using QProcessQt5:如何使用 QProcess 进行批处理
【发布时间】:2019-01-25 11:22:49
【问题描述】:

我想让 QProcess 一次运行多个命令,而不是一次运行一个。

void Route::add_route()
{
    QProcess *Add_route = new QProcess(this);
    Add_route->start("notepad",QStringList() << "interface" << "ipv4" << "set" << "interface" << "" << "metric=1");
    Add_route->start("explorer",QStringList() << "interface" << "ipv6" << "set" << "interface" << "" << "metric=1");
    Add_route->waitForFinished();
}

通过使用它,它只会运行第一个。
Ps:我使用记事本和资源管理器只是为了测试
谢谢!

【问题讨论】:

    标签: c++ c++11 qt5 qprocess


    【解决方案1】:

    QProcess 有一个成员函数startDetached()。为您需要启动的每个进程使用一个 QProcess,而不是为所有进程使用一个 QProcess。见http://doc.qt.io/qt-5/qprocess.html#startDetached

    【讨论】:

    • 每次启动添加一个waitforfinished怎么样?我将notepad和explorer替换为netsh,这样运行起来不会花太多时间。
    【解决方案2】:

    QProcess 顾名思义代表单个进程而不是多个。 因此,您使用单个 QProcess 对象运行两个进程的要求在设计上是错误的。

    你有两个选择:

    【讨论】:

    • 谢谢,我用第二个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 2020-09-24
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多