读书人

qt 执行linux 命令的一个奇怪的有关问

发布时间: 2013-06-26 14:29:32 作者: rapoo

qt 执行linux 命令的一个奇怪的问题
第一次学习并且使用qt,遇到一个比较奇怪的问题,请各位给予一些指点:


需要使用qt直接执行一条linux命令 :ps aux|grep -v PID|

程序如下:


cmd = new QProcess;
cmd->start("ps aux|grep -v PID");
cmd->waitForFinished(50000);
QString result = cmd->readAll();

qDebug()<<result ;


希望将执行返回的结果放置到字符串result中。
但是问题是,好像这个命令不能被解析一样。返回的result 为空
但是如果使用 cmd->start("ps aux"); 则这个命令可以正常被解析

说明:ps aux|grep -v PID 在linux命令行中肯定是可以被执行的。


在线急等 找了很多资料也不知道是怎么回事 。。谢谢!

Qt Linux
[解决办法]
试了一下,加了管道符就不好了.. "ps aux > tmp.out"
这样也不好使... 等高手吧..
[解决办法]

QProcess p(this);
QStringList arg;
arg << "/c" << "dir" << "C:\\windows" << ">" << "c:\\dir.txt";
p.start("cmd", arg);
p.waitForFinished();

[解决办法]
引用:
试了一下,加了管道符就不好了.. "ps aux > tmp.out"
这样也不好使... 等高手吧..

问题出在几个基本概念你没搞清,管道符,重定向等都是你的shell进行解析处理的,它们不是你所调用程序的参数。

如果你想这样用,你应该去调用 sh/bash/dash 等程序。前面版主给出了windows下的例子,linux与之类似

或者,你直接去操作QProcess提供的标准输入、输出、出错 3个流,构建自己需要的管道和重定向

读书人网 >QT开发

热点推荐