首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QProcess终端输入

QProcess终端输入
EN

Stack Overflow用户
提问于 2012-08-15 15:48:46
回答 2查看 2K关注 0票数 1

我对Qt不是很在行,对Ubuntu也没有太多了解,但我是这样做的:我启动gnome-terminal,然后从它启动我的*.sh文件。从Qt怎么做?我做了以下几件事:

代码语言:javascript
复制
QProcess *proc = new QProcess;
proc->start("gnome-terminal");
proc->write("build.sh\n");

但是终端正在打开,什么也没有发生,我可以手动输入命令,但我需要从QProcess执行此操作。

EN

回答 2

Stack Overflow用户

发布于 2012-09-17 10:33:08

据说你运行的程序是有缓冲的,所以只有程序写出了足够的输出,你才能得到它们。

我现在正在做这件事,但到目前为止还没有找到任何有帮助的东西。

编辑:

好的,Qprocess很可能事先使用了管道,而管道有一个4K的缓冲区,所以我们的想法是跳过这个缓冲区。

如果您在stdbuf之后运行程序,如下所示:

代码语言:javascript
复制
stdbuf -i0 -o0 -e0 gnome-terminal

它可能会起作用

票数 0
EN

Stack Overflow用户

发布于 2015-09-29 04:56:05

Gnome-terminal是终端仿真器,它不执行命令(如果它不是内部命令)。

您需要:

QProcess *proc = new Process(); proc->start("sh"); proc->waitForStarted();

或其他命令行解释器(sh、bash、cmd.exe),然后可以使用write方法将命令写入命令行界面。

如果你想读取输出,你需要这样:

QString tmp = mProcess->readAllStandardOutput();

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11965718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档