Russian Qt Forum
Ноябрь 23, 2024, 04:11
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Установка, сборка, отладка, тестирование
>
зависание диалога при использование ф-ции system(path)
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: зависание диалога при использование ф-ции system(path) (Прочитано 4494 раз)
homa9999
Гость
зависание диалога при использование ф-ции system(path)
«
:
Май 10, 2006, 16:45 »
привет всем!у меня такая проблема.есть главный диалог, в котором все данные.потом я нажимаю на кнопку и запускается ф-ция,в которой я пишу:
...
system(PathFirst);
system(PathSecond);
...
PathFirst - это путь к дугой программе.Которая обрабатывает мои данные и выдает ответ виде файла,который я открываю в новом диалоге.Пишу прогу в Линуксе.
Проблема,когда запускаю ф-цию(тонее system в ф-ции).у меня главный диалог "замаражиается",зависает.процесс обработки может идти долго.после обработки диалог возвращается к нормальной работе.как избавиться от зависания. расматривал QThread,но не очень понял и ничего не получилось.помогите please,если есть возможнось .напишите код.спасибо.
Записан
chief
Гость
зависание диалога при использование ф-ции system(path)
«
Ответ #1 :
Май 10, 2006, 17:51 »
в этих случаях я использовал fork() для того чтоб создать дочерний процесс, exec() для выставления бинаря, и соответственно ловил sigchld. но тут с портированием могут проблемы возникнуть. ипользуя QThread мона эту проблему решить без всяких ifdef-ов.
фокус в том, что system после выполнения fork и exec уходит в waitpid соответственно верёвка вызвавшая system блокируется до того момента, гогда завершится дочерний процесс
Записан
homa9999
Гость
зависание диалога при использование ф-ции system(path)
«
Ответ #2 :
Май 10, 2006, 20:28 »
Я понял тебя chief,но скажи у тебя нет примера с Qthread.Чтобы можно было разобратся?
Записан
alex0303
Гость
зависание диалога при использование ф-ции system(path)
«
Ответ #3 :
Май 10, 2006, 20:52 »
А чем QProcess то не устраивает?
Он:
- и запускает в паралель (или параЛЛель?)
- и сигналит об окончании, и exitStatus() имеет
- и stdin/stdout/stderr порождённого процесса позволяет переопределять на себя, можно и без промежуточных файлов обойтись (при опредёлённых условиях).
- ну и кроссплатформенный к тому-же.
Записан
chief
Гость
зависание диалога при использование ф-ции system(path)
«
Ответ #4 :
Май 11, 2006, 09:23 »
Кстати да, ты абсолютно прав! QProcess, сдесь в самый раз. А нащёт кода по QThread, так в самлах что идут с этим самым Qt всё популярно изложено (см. examples/threads)
Записан
homa9999
Гость
зависание диалога при использование ф-ции system(path)
«
Ответ #5 :
Май 11, 2006, 10:27 »
Спасибо,сегодня все посмотрю и попробую
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...