QProcess и setpgid

У меня есть приложение Qt GUI, которое упаковывает процесс консоли. Я использую QProcess для его запуска и отображения его результатов в QTextEdit. Однако я делаю это особым образом (запускаю оболочку), потому что процесс должен иметь доступ к некоторым переменным среды, которые экспортируются в .bashrc.
Кроме того, чтобы правильно завершить консольный процесс, когда окно QTextEdit закрыто, я установил pgid процесса GUI равным pid вызываемого консольного процесса.

Это выглядит примерно так :

process->start(getenv("SHELL"), QStringList() << "-i");
setpgid(process->pid(),0);
contentsWindow->setProcessPid(process->pid());

if (process->waitForStarted())
{
connect(contentsWindow,SIGNAL(aboutToClose()),this,SLOT(terminateLaunch()));
process->write("./yarprosbridge --from bridge_conf.ini --gui\n");
}

Он отлично работает, когда я запускаю его из QtCreator или из Nautilus, но что-то идет не так, когда я запускаю его из терминала. Если я удалю setpgid инструкция, работает нормально. Если нет, QTextEdit остается пустым, но я не получаю никакой ошибки (даже при getpgid что успешно) и состояние QProcess в порядке.

Что может вызвать это? Чем он может отличаться, если я запускаю его из QtCreator или из терминала?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]