Qt执行带管道的命令差异

在Window中执行管道命令时,由于双引号或参数分割或合并的原因是无法执行的,例如以下这条命令:
cmd.exe /c netstat -ano|find “80”|find “62499”
也正因为Window的差异,故Qt提供了一个特殊函数:void QProcess::setNativeArguments(const QString &arguments)
具体执行如下:

#if defined(Q_OS_WIN)
    QString cmd = QString("/c netstat -ano|find \"80\"|find \"%1\"").arg(port);
    qDebug() << "onConnected" << cmd;
    proc->setNativeArguments(cmd);
    proc->start("cmd.exe");
#elif defined(Q_OS_MAC)
    QStringList args;
    args << "-c" << QString("netstat -nat|grep %1|grep 80").arg(port);
    proc->start("/bin/bash", args);
#else
    QStringList args;
    args << "-c" << QString("netstat -ntp|grep %1|grep 80").arg(port);
    proc->start("/bin/bash", args);
#endif