1

我不太擅长 Qt,对 Ubuntu 也没有太多了解,但我就是这样做的:我启动 gnome-terminal,然后从它启动我的 *.sh 文件。如何从 Qt 中做到这一点?我做了:

QProcess *proc = new QProcess;
proc->start("gnome-terminal");
proc->write("build.sh\n");

但是只是终端正在打开并且没有任何反应,我可以手动输入命令,但我需要从 QProcess 中完成。

4

2 回答 2

0

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

我现在正在研究这个,但到目前为止还没有发现任何帮助。

编辑:

OK,很可能是Qprocess预先使用了管道,并且管道有一个4K的缓冲区,所以想法是跳过这个缓冲区。

如果您在以下之后运行程序stdbuf

stdbuf -i0 -o0 -e0 gnome-terminal

它可能会起作用

于 2012-09-17T02:33:08.420 回答
0

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

你需要:

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

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

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

QString tmp = mProcess->readAllStandardOutput();

于 2015-09-28T20:56:05.077 回答