我对Qt不是很在行,对Ubuntu也没有太多了解,但我是这样做的:我启动gnome-terminal,然后从它启动我的*.sh文件。从Qt怎么做?我做了以下几件事:
QProcess *proc = new QProcess;
proc->start("gnome-terminal");
proc->write("build.sh\n");但是终端正在打开,什么也没有发生,我可以手动输入命令,但我需要从QProcess执行此操作。
发布于 2012-09-17 10:33:08
据说你运行的程序是有缓冲的,所以只有程序写出了足够的输出,你才能得到它们。
我现在正在做这件事,但到目前为止还没有找到任何有帮助的东西。
编辑:
好的,Qprocess很可能事先使用了管道,而管道有一个4K的缓冲区,所以我们的想法是跳过这个缓冲区。
如果您在stdbuf之后运行程序,如下所示:
stdbuf -i0 -o0 -e0 gnome-terminal它可能会起作用
发布于 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();
https://stackoverflow.com/questions/11965718
复制相似问题