QProcess终端输入

时间:2012-08-15 07:48:46

标签: qt input console qprocess

我不是很擅长Qt而且对Ubuntu知之甚少,但这就是我的工作: 我启动gnome-terminal然后从它启动我的* .sh文件。如何从Qt做到这一点? 我做了:

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

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

2 个答案:

答案 0 :(得分:0)

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

我现在正在研究这个问题,但直到现在还没有发现任何有用的东西。

修改

好吧,Qprocess最有可能事先使用管道,而且管道有一个4K缓冲区,所以想法是跳过这个缓冲区。

如果您在stdbuf之后运行程序,请执行以下操作:

stdbuf -i0 -o0 -e0 gnome-terminal

它可能有用

答案 1 :(得分:0)

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

你需要:

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

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

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

QString tmp = mProcess->readAllStandardOutput();