我不是很擅长Qt而且对Ubuntu知之甚少,但这就是我的工作: 我启动gnome-terminal然后从它启动我的* .sh文件。如何从Qt做到这一点? 我做了:
QProcess *proc = new QProcess;
proc->start("gnome-terminal");
proc->write("build.sh\n");
但是只是终端打开而没有任何反应,我可以手动输入命令,但我需要从QProcess中完成。
答案 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();