#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);
}
QProcess执行脚本
最新推荐文章于 2025-07-26 11:04:55 发布