我目前正在使用QT4.8创建一个GUI,它基本上需要启动一个控制台应用程序。但是,因为这个控制台应用程序试图获取一些环境变量,所以我似乎无法设法使其工作。 我明显使用QProcess并尝试了几种解决方案:
process->start("./yarpbridge", QStringList() << "--from" << "tmp.ini");
此解决方案不会产生控制台窗口,此外,通过将输出重定向到qDebug()
,它会打印与缺少环境变量相对应的错误。
process->start("gnome-terminal", QStringList() << "-e" << "zsh" << "-c" << "\"./yarpbridge --from tmp.ini"\");
此解决方案确实启动了一个控制台窗口,但它仍显示错误消息,因为在打开控制台窗口时可能不会以某种方式查询.zshrc。
你是否有一个解决方案可以让我这样做,甚至更好,这不仅适用于&#34; gnome-terminal&#34;和&#34; zsh&#34;用户?
非常感谢,
答案 0 :(得分:0)
你能发布你得到的错误吗?
这很奇怪,因为您不需要启动终端来运行CLI程序,也许在发布错误消息之后我可能会知道问题是什么。
你也可以试试这个:
#include <stdio.h>
char buffer[1024];
FILE* fd = popen("/path/to/yarpbridge", "r");
if (fd == NULL) {
// Error: do something
}
while(NULL != fgets(buffer, sizeof(buffer), fd)) {
QString s(buffer);
s = s.stripWhiteSpace();
// s contains the output, pretty much as readAllStandardOutput() in QProcess
}
// don't forget to close file.
close (fd);