查看完整版本: [-- QProcess怎么调用系统命令,像ls,which这样的命令 --]

QTCN开发网 -> Qt嵌入式开发 -> QProcess怎么调用系统命令,像ls,which这样的命令 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

zhoulin487 2016-05-16 10:13

QProcess怎么调用系统命令,像ls,which这样的命令

我的代码如下,调用其他的命令是有返回结果的,调用ls或者which都没有返回结果,求大神指导
QProcess cmdProcess;QString  cmd = QString("ls");cmdProcess.setWorkingDirectory(QApplication::applicationDirPath());cmdProcess.start(cmd); cmdProcess.waitForFinished();QByteArray adbCheckStr=cmdProcess.readAllStandardOutput();输出一直为空,调用which is adb这样的命令也为空,但是在自己的终端调用是有输出结果的

robinsonsir 2016-05-16 14:08
    QProcess p;
    p.start("ls");
    p.waitForStarted();
    p.waitForFinished();
    QString valueStr = QString::fromLocal8Bit(p.readAllStandardOutput());

    qDebug() << "Str: " << valueStr;

zhoulin487 2016-05-16 14:46
robinsonsir:    QProcess p;
    p.start("ls");
    p.waitForStarted();
    p.waitForFinished();
    QString valueStr = QString::fromLocal8Bit(p.readAllStandardOut .. (2016-05-16 14:08) 

执行ls是有结果输出来了,可是我把ls换成 which is adb,又没有输出结果了。我的目的是为了检测用户配置了adb没有,你有什么好的方法吗?

robinsonsir 2016-05-18 14:25
你的命令,首先要在终端里面运行一下,看看会有什么结果啊。

zhoulin487 2016-05-18 14:36
robinsonsir:你的命令,首先要在终端里面运行一下,看看会有什么结果啊。 (2016-05-18 14:25) 

终端运行过,是有输出结果的,输出就是我的adb所在的路径

robinsonsir 2016-05-20 14:42
zhoulin487:终端运行过,是有输出结果的,输出就是我的adb所在的路径 (2016-05-18 14:36) 

程序里能不能which is adb >tmp.txt,在这个文件里看结果?

zhoulin487 2016-05-23 16:04
robinsonsir:程序里能不能which is adb >tmp.txt,在这个文件里看结果? (2016-05-20 14:42) 

这样做了,文件里面为空。知道为什么为空的原因,但是不知道怎么解决。因为which指令是在你的PATH里面去查找东西,我就在Qt代码里面执行echo $PATH, 显示的PATH结果是在QtCreator看到的PATH,而不是我在终端执行echo $PATH里面显示的路径。怎么在Qt执行程序里加载系统的PATH??

robinsonsir 2016-05-24 10:02
zhoulin487:这样做了,文件里面为空。知道为什么为空的原因,但是不知道怎么解决。因为which指令是在你的PATH里面去查找东西,我就在Qt代码里面执行echo $PATH, 显示的PATH结果是在QtCreator看到的PATH,而不是我在终端执行echo $PATH里面显示的路径。怎么在Qt执行程序里加载系统的PATH?? (2016-05-23 16:04) 

which is adb  后面能加一个绝对路径 运行吗?

zhoulin487 2016-05-24 10:27
robinsonsir:which is adb  后面能加一个绝对路径 运行吗? (2016-05-24 10:02) 

重定向可以的吧!system("which is adb >~/Des/name/adb.txt");

robinsonsir 2016-05-24 10:41
zhoulin487:重定向可以的吧!system("which is adb >~/Des/name/adb.txt"); (2016-05-24 10:27) 

我的意思是这样可以吗: which is db  /XX/XX

zhoulin487 2016-05-24 10:50
robinsonsir:我的意思是这样可以吗: which is db  /XX/XX  (2016-05-24 10:41) 

可以吧,没太明白你这样的意思

robinsonsir 2016-05-24 12:42
zhoulin487:可以吧,没太明白你这样的意思 (2016-05-24 10:50) 

终端执行echo $PATH里面显示的路径 , 放到 which is adb 后面 可以吗?

which is adb + 终端执行echo $PATH里面显示的路径

zhoulin487 2016-05-24 13:41
robinsonsir:终端执行echo $PATH里面显示的路径 , 放到 which is adb 后面 可以吗?
which is adb + 终端执行echo $PATH里面显示的路径 (2016-05-24 12:42) 

问题的关键在于怎么在qt程序里面去获取终端执行的echo $PATH,在qt程序里面调用system("echo $PATH")显示的是QtCreator里面的项目运行环境的PATH,跟系统的PATH没啥关联

robinsonsir 2016-05-24 14:49
zhoulin487:问题的关键在于怎么在qt程序里面去获取终端执行的echo $PATH,在qt程序里面调用system("echo $PATH")显示的是QtCreator里面的项目运行环境的PATH,跟系统的PATH没啥关联 (2016-05-24 13:41) 

which adb 与 which is adb 有啥区别啊?

zhoulin487 2016-05-24 15:52
robinsonsir:which adb 与 which is adb 有啥区别啊? (2016-05-24 14:49) 

没区别吧,我也不是很清楚,终端运行的输出结果都是一样

robinsonsir 2016-05-24 17:35
zhoulin487:没区别吧,我也不是很清楚,终端运行的输出结果都是一样 (2016-05-24 15:52) 

运行adb命令,需要特定路径吗? 是否可以通过运行adb命令,查看返回结果判断是否安装有adb?


查看完整版本: [-- QProcess怎么调用系统命令,像ls,which这样的命令 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled