qt 执行linux 命令的一个奇怪的有关问题
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();
[解决办法]问题出在几个基本概念你没搞清,管道符,重定向等都是你的shell进行解析处理的,它们不是你所调用程序的参数。
如果你想这样用,你应该去调用 sh/bash/dash 等程序。前面版主给出了windows下的例子,linux与之类似
或者,你直接去操作QProcess提供的标准输入、输出、出错 3个流,构建自己需要的管道和重定向