Название: [РЕШЕНО] QThread и синхронный вызов QProcess в shell. Отправлено: mapron от Ноябрь 13, 2010, 14:30 Структура приложения такая:
имеется основной поток, который является веб-сервером и обрабатывает заявки от пользователей на компиляцию, сохраняя в БД. Имеется CompilerThread, наследуемый от QThread, запускаемый при старте веб-сервера (соединяется с БД другим соединением, здесь нет проблем). Затем QThread в цикле с задержкой извлекает нужные задачи и выполняет их на компиляцию, вызывая shell-скрипт. Если этот скрипт запускается из основного потока, то все нормально ,программа компилируется. Из вторичного потока g++ выдает ошибку "undefined reference to `main\'" файл build_cpp.sh: #!/bin/sh path='/home/mapron/qt/server'; g++ $path/tmp/in.cpp -Wfatal-errors -o $path/tmp/out.run 2>&1 фрагмен run(), цикл опущен: Код если сделать вывод не bash, а env - то там с путями все в порядке. Если убрать файл физически, то в выводе g++ ругается на отстутсвующий файл. Если в файл написать любой мусор, что угодно - вылазит это сообщение. UPD: нужно доавить file.close(); после окончания записи ;) А еще программист с 7 лет опыта называется Название: Re: QThread и синхронный вызов QProcess в shell. Отправлено: mapron от Ноябрь 13, 2010, 15:41 Что интересно, что если заметить QThread на QTimer, то получается тот же самый результат. Однако если запускать тот же код в основном потоке, то все работает без ошибок, но идеологически это мне кажется не верным. Что я упускаю из виду?
|