В настоящее время я делаю графический интерфейс с использованием QT4.8, который в основном должен запускать консольное приложение. Однако из-за того, что это консольное приложение пытается извлечь некоторые переменные среды, мне не удается заставить это работать.
Я, очевидно, использую QProcess и попробовал несколько решений:
process->start("./yarpbridge", QStringList() << "--from" << "tmp.ini");
Это решение не порождает окно консоли и, кроме того, путем перенаправления вывода на qDebug()
, он печатает ошибки, соответствующие отсутствию переменных среды.
process->start("gnome-terminal", QStringList() << "-e" << "zsh" << "-c" << "\"./yarpbridge --from tmp.ini"\");
Это решение запускает окно консоли, но, тем не менее, отображает сообщения об ошибках, потому что почему-то .zshrc, вероятно, не использовался при открытии окна консоли.
Хотели бы вы найти решение, которое позволило бы мне это сделать, а еще лучше — работать не только с пользователями «gnome-terminal» и «zsh»?
Большое спасибо,
Можете ли вы опубликовать ошибку, которую вы получаете?
Это очень странно, потому что вам не нужно запускать терминал для запуска программы 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);
Других решений пока нет …