• 7268阅读
  • 5回复

[已解决]请问一个QProcess的标准输出问题。。 [复制链接]

上一主题 下一主题
离线darrenmu
 

只看楼主 倒序阅读 楼主  发表于: 2010-06-10
— 本帖被 xtfllbl 执行加亮操作(2010-06-11) —
请看一段小代码,
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QProcess pro;
    pro.start("ls");

    return a.exec();
}

请问为何运行程序的时候终端不能显示QProcess的ls命令输出的结果?我必须得用QT的readyRead信号去读吗?

谢谢!

PS: 我不是想读一个目录。我就是想在终端看到QProcess执行的命令的输出结果
[ 此帖被darrenmu在2010-06-10 15:58重新编辑 ]
离线xtfllbl

只看该作者 1楼 发表于: 2010-06-10
1.你没有去读取信息怎么会有输出呢。。。
2.就算你读取了,我个人认为 ls 命令的输出也不会是标准输入输出。

结论:你如果想获得某一目录的文件名或者目录什么的,请自己老老实实写代码遍历,这种东西没有捷径可走。
上海欢迎您
离线darrenmu

只看该作者 2楼 发表于: 2010-06-10
多谢楼上。

如果fork的话,不是子进程和父进程公用文件描述符么,子进程的标准输出和父进程是一样的吧。

QProcess是否在创建的时候,标准输出就是自己建了个缓冲区?
离线darrenmu

只看该作者 3楼 发表于: 2010-06-10
我不是想读一个目录。我就是想在终端看到QProcess执行的命令的输出结果。ls命令的结果输出到哪了?..
[ 此帖被darrenmu在2010-06-10 14:56重新编辑 ]
离线xtfllbl

只看该作者 4楼 发表于: 2010-06-10
引用第3楼darrenmu于2010-06-10 14:48发表的  :
我不是想读一个目录。我就是想在终端看到QProcess执行的命令的输出结果。ls命令的结果输出到哪了?..

这个我也没试过,以下链接参考
http://www.qtcn.org/bbs/read.php?tid=22832&keyword=%D6%D5%B6%CB
http://www.qtcn.org/bbs/read.php?tid=1163&keyword=%D6%D5%B6%CB
上海欢迎您
离线darrenmu

只看该作者 5楼 发表于: 2010-06-10
解决了,其实还是满简单的。我连接readyRead信号,然后调用readAllStandardOutput()就可以了。
之前我没等信号就调用readAllStandardOutput()什么东西都没有,可能那么写有问题。

多谢LS。
快速回复
限100 字节
 
上一个 下一个