【发布时间】:2011-11-27 15:57:04
【问题描述】:
我需要强制我的 c++ QT4 应用程序从 linux 命令读取结果。我正在尝试使用 Qprocess,但是一旦我的命令变得复杂,它就会以某种方式变得混乱(只是猜测)并且不起作用。
这里我试着为你做一个小例子:
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"; 替换 comman,它的工作会很顺畅
该错误由操作系统在标准错误中返回。
因此我猜想用于命令的 Qstring 会以某种方式被操纵。知道发生了什么吗?
【问题讨论】: