• 6957阅读
  • 15回复

QProcess怎么调用系统命令,像ls,which这样的命令 [复制链接]

上一主题 下一主题
离线zhoulin487
 

只看楼主 倒序阅读 楼主  发表于: 2016-05-16
我的代码如下,调用其他的命令是有返回结果的,调用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

只看该作者 1楼 发表于: 2016-05-16
    QProcess p;
    p.start("ls");
    p.waitForStarted();
    p.waitForFinished();
    QString valueStr = QString::fromLocal8Bit(p.readAllStandardOutput());

    qDebug() << "Str: " << valueStr;
离线zhoulin487

只看该作者 2楼 发表于: 2016-05-16
回 robinsonsir 的帖子
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

只看该作者 3楼 发表于: 2016-05-18
你的命令,首先要在终端里面运行一下,看看会有什么结果啊。
离线zhoulin487

只看该作者 4楼 发表于: 2016-05-18
回 robinsonsir 的帖子
robinsonsir:你的命令,首先要在终端里面运行一下,看看会有什么结果啊。 (2016-05-18 14:25) 

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

只看该作者 5楼 发表于: 2016-05-20
回 zhoulin487 的帖子
zhoulin487:终端运行过,是有输出结果的,输出就是我的adb所在的路径 (2016-05-18 14:36) 

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

只看该作者 6楼 发表于: 2016-05-23
回 robinsonsir 的帖子
robinsonsir:程序里能不能which is adb >tmp.txt,在这个文件里看结果? (2016-05-20 14:42) 

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

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

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

只看该作者 8楼 发表于: 2016-05-24
回 robinsonsir 的帖子
robinsonsir:which is adb  后面能加一个绝对路径 运行吗? (2016-05-24 10:02) 

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

只看该作者 9楼 发表于: 2016-05-24
回 zhoulin487 的帖子
zhoulin487:重定向可以的吧!system("which is adb >~/Des/name/adb.txt"); (2016-05-24 10:27) 

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

只看该作者 10楼 发表于: 2016-05-24
回 robinsonsir 的帖子
robinsonsir:我的意思是这样可以吗: which is db  /XX/XX  (2016-05-24 10:41) 

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

只看该作者 11楼 发表于: 2016-05-24
回 zhoulin487 的帖子
zhoulin487:可以吧,没太明白你这样的意思 (2016-05-24 10:50) 

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

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

只看该作者 12楼 发表于: 2016-05-24
回 robinsonsir 的帖子
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

只看该作者 13楼 发表于: 2016-05-24
回 zhoulin487 的帖子
zhoulin487:问题的关键在于怎么在qt程序里面去获取终端执行的echo $PATH,在qt程序里面调用system("echo $PATH")显示的是QtCreator里面的项目运行环境的PATH,跟系统的PATH没啥关联 (2016-05-24 13:41) 

which adb 与 which is adb 有啥区别啊?
离线zhoulin487

只看该作者 14楼 发表于: 2016-05-24
回 robinsonsir 的帖子
robinsonsir:which adb 与 which is adb 有啥区别啊? (2016-05-24 14:49) 

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

只看该作者 15楼 发表于: 2016-05-24
回 zhoulin487 的帖子
zhoulin487:没区别吧,我也不是很清楚,终端运行的输出结果都是一样 (2016-05-24 15:52) 

运行adb命令,需要特定路径吗? 是否可以通过运行adb命令,查看返回结果判断是否安装有adb?
快速回复
限100 字节
 
上一个 下一个