我不太擅长 Qt,对 Ubuntu 也没有太多了解,但我就是这样做的:我启动 gnome-terminal,然后从它启动我的 *.sh 文件。如何从 Qt 中做到这一点?我做了:
QProcess *proc = new QProcess;
proc->start("gnome-terminal");
proc->write("build.sh\n");
但是只是终端正在打开并且没有任何反应,我可以手动输入命令,但我需要从 QProcess 中完成。
据说你运行的程序是有缓冲的,所以只有程序写出足够的输出,你才能得到它们。
我现在正在研究这个,但到目前为止还没有发现任何帮助。
编辑:
OK,很可能是Qprocess预先使用了管道,并且管道有一个4K的缓冲区,所以想法是跳过这个缓冲区。
如果您在以下之后运行程序stdbuf
:
stdbuf -i0 -o0 -e0 gnome-terminal
它可能会起作用
Gnome-terminal 是终端模拟器,它不执行命令(如果不是内部命令)。
你需要:
QProcess *proc = new Process();
proc->start("sh");
proc->waitForStarted();
或其他命令行解释器(sh、bash、cmd.exe),然后您可以使用方法将命令写入 CLI write
。
如果你想读取输出,你需要这个:
QString tmp = mProcess->readAllStandardOutput();