QProcess执行脚本

#include <QProcess>

void test::ConfigItcEnv() 
{
    QString _ip = "192.31.1.1";
    QString enable = "true";

    // 创建 QProcess 对象(用于执行外部命令)
    QProcess process;
    // 设置进程输出模式:合并标准输出(stdout)和错误输出(stderr)
    process.setProcessChannelMode(QProcess::MergedChannels); // 合并标准输出和错误输出
    // 获取当前系统环境变量并设置给 QProcess
    QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
    process.setProcessEnvironment(env);

    //  构造要执行的命令
    QString command = QString("sudo %1 %2 %3 %4 %5")
        .arg(QString::fromStdString("脚本"))
        .arg(_ip)
        .arg(enable)
        .arg(QString::fromStdString("参数"))
        .arg(QString::fromStdString("参数"));

    // 记录执行的命令(用于调试)
    xlog::SwInfo("执行命令: %s", command.toStdString().c_str());

    // 启动命令:通过 `bash -c` 执行(确保 shell 解析命令)
    process.start("bash", {"-c", command});
    // 等待进程完成(-1 表示无限等待)
    process.waitForFinished(-1);
    // 非阻塞方式(推荐)
    /*connect(&m_process, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
            [=](int exitCode, QProcess::ExitStatus exitStatus) {
        QString output = m_process.readAll();
        xlog::SwInfo(""输出:\n%s, 退出状态为:%d", 
                     output.toStdString().c_str(), exitStatus);
    });*/
    
    // 读取所有输出(标准输出 + 错误输出)
    QString output = process.readAll();
    int exit_code = process.exitCode();

    xlog::SwInfo("输出:\n%s", output.toStdString().c_str());
    xlog::SwInfo("退出码: %d", exit_code);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值