我需要强制我的 c++ QT4 应用程序从 linux 命令读取结果。我正在尝试使用 Qprocess,但是一旦我的命令变得复杂,它就会以某种方式变得混乱(只是猜测)并且不起作用。
在这里,我尝试为 yu 做一个小例子:
QProcess process;
command = "ls -l | grep a | sort";
qDebug() << "Execute command -> "+command;
process.start( command );
process.waitForFinished(-1);
QString processStdout = process.readAllStandardOutput();
QString processStderr = process.readAllStandardError();
qDebug() << "Std out -> "+processStdout;
qDebug() << "Std err -> "+processStderr;
这将打印:
Execute command -> ls -l | grep a | sort
"Std out -> "
"Std err -> ls: |: No such file or directory
如果从控制台运行,while 将正确打印文件名。
如果我用一些认为更简单的命令替换 命令,command = "ls -l";
那么它可以顺畅地工作 操作系统会在标准错误中返回错误。
因此,我猜想用于命令的 Qstring 会以某种方式被操纵。知道发生了什么吗?