Russian Qt Forum
Май 21, 2024, 04:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Обмен сообщениями между процессами  (Прочитано 2172 раз)
ammaximus
Гость
« : Апрель 25, 2014, 15:34 »

В связи с большим объемом сообщений, возникла необходимость дополнить логер возможностью отображать данные на локальной машине БЕЗ передачи по сети.

Что за логер: http://www.prog.org.ru/index.php?topic=26149

Мой логер состоит из двух частей: библиотека qlc подключается к отслеживаемому проекту и предоставляет интерфейс для логирования, а QLogCat принимает данные и отображает их.

Так уж случилось, что QLogCat - это проект мудреных решений, и я решил не отступать от этой политики. В статической области хидера qlc был создан QProcess со ссылкой на QLogCat-морду. Таким образом, при первой попытке записи в лог, запускается морда, все последующие запуски уже идут туда. Запись осуществляется QProcess.write(). В морду, соответственно, был добавлен поток чтения из STDIN.

Получилось очень красивое решение, которое прекрасно работает, если логируемый процесс один. Но, стоит появиться новому процессу, как открывается новая морда, поскольку статическая область QLC на новую копию не распространяется.

Задача: придумать способ определять запущена ли сейчас морда и, если да, то подключиться к ней. (БЕЗ СЕТИ!)

1. Подключение через QProcess. Можно ли подключиться к существующему процессу? Я такой возможности не обнаружил.
2. Диспетчер, который будет принимать сообщения от нескольких процессов и перенаправлять на QProcess (поскольку функция write() не потокобезопасна).
3. QEvent(), QLocalSocket()?


P.S. Решил описать вопрос текстом, без подкрепления кодом, дабы не запутывать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.039 секунд. Запросов: 17.