我需要强制我的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;
Run Code Online (Sandbox Code Playgroud)
这将打印:
Execute command -> ls -l | grep a | sort
"Std out -> "
"Std err -> ls: |: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果从consol中删除,将正确打印文件名.
如果我用更简单的方式替换command = "ls -l";comman , 那么它可以顺利工作.操作系统在标准错误中返回错误.
因此,我猜测用于命令的Qstring会以某种方式被操纵.关于wht发生的任何想法?