首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

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

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

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个流,构建自己需要的管道和重定向

热点排行