2013-05-31 41 views
0

我目前正在使用QT4.8制作GUI,基本上需要启动控制台应用程序。但是,因为这个控制台应用程序试图获取一些环境变量,所以我似乎无法做到这一点。 我明明使用QProcess中,并尝试了几种解决方案:启动使用QT Gui应用程序环境变量的控制台应用程序

process->start("./yarpbridge", QStringList() << "--from" << "tmp.ini"); 

此解决方案不生成一个控制台窗口,此外,由输出重定向到qDebug(),它打印相应缺乏环境变量的误差修改。

process->start("gnome-terminal", QStringList() << "-e" << "zsh" << "-c" << "\"./yarpbridge --from tmp.ini"\"); 

该解决方案确实启动控制台窗口,但它仍然显示错误消息,因为在某种程度上.zshrc大概没有打开控制台窗口时咨询。

你有一个解决方案,可以让我做到这一点,甚至更好,不仅适用于“gnome-terminal”和“zsh”用户?

非常感谢,

回答

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); 
+0

我宁可不使用C标准... 错误输出是相当多有关我的程序时没有定义的环境变量。不过,我想我已经通过在交互模式下运行shell来解决这个问题了(-i标志)。 – wrousseau

相关问题