我正在尝试使用以下代码修改服务器linux上的文件,但它不起作用。
QProcess *pProcess = new QProcess(this);
QProcess *pProcess2 = new QProcess(this);
pProcess2->setStandardOutputProcess(pProcess);
QString cmd = QString("plink.exe -ssh %1 -i root.ppk -l root tee /etc/test.txt").arg(strSensorAddress);
pProcess2->start("echo hello");
pProcess->start(cmd);
pProcess->setProcessChannelMode(QProcess::ForwardedChannels);
我能够使用这样的文件来做到这一点:
QStringList arguments;
arguments << "-ssh" << strSensorAddress << "-i" << "root.ppk" << "-l" << "root" << "-m" << sFileName;
pProcess->setProcessChannelMode(QProcess::MergedChannels);
pProcess->start("plink.exe", arguments);
包含以下文件:
echo hello | tee /etc/factory_test.txt
但由于内容需要更改,我不会依赖文件。
当只需要一个命令时,我能够执行命令,例如,只需创建一个这样的文件:
QString cmd = QString("plink.exe -ssh %1 -i root.ppk -l root touch test.txt").arg(strSensorAddress);
pProcess->start(cmd);
但是当我需要做echo hello > test.txt
之类的2个命令时,我无法做到这一点
答案 0 :(得分:0)
您只能使用QProcess运行进程而不是命令。但是你可以这样做:
process.start("bash", QStringList() << "-c" << "cat file | grep string");
例如。