crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Проблемы с environment дочернего приложения
mva
  опции профиля:
сообщение 28.10.2010, 22:36
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 104
Регистрация: 15.3.2009
Из: Киров
Пользователь №: 615

Спасибо сказали: 3 раз(а)




Репутация:   0  


Доброго времени суток всем!

Мое приложение работает с PostgreSQL и во время работы вызывает консольное приложение psql для выполнения некоторых операций с сервером.
Консольное приложение запускается следующим образом:
                    QProcess* proc = new QProcess();
                    QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
                    env.insert("PGPASSWORD", password);
                    proc->setProcessEnvironment(env);
                    if (proc->execute("psql", QStringList()  << "-U" << "postgres" << "-f" << initScriptFileName << lastDbName) >= 0)
                        lResult = true;
                    else
                        app->showError(QObject::tr("Не удалось запустить psql"));


Проблема в том, что программа зависает на команде execute. Т.е. консольное приложение не выполняется, т.к. ждет ввода пароля, который передать через параметры в утилиту нельзя. В моем случае по идее пароль передается через среду окружения.
Если смотреть отладчиком QtCreator'а, то переменная PGPASSWORD как будто создается, но при проверке ProcessExplorer'ом этой переменной в среде окружения psql нет. Если создать эту переменную вручную через свойства ярлычка "Мой компьютер", то все работает нормально.

Под Linux все работает нормально.


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 4.12.2024, 17:42