Коммуникация двух exe'шек?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Коммуникация двух exe'шек?

Сообщение McLion » 04.12.2015 13:27:33

Есть такой план. Хочу написать программу-терминал и невидимую сервис-программку (служба или как она там на русском).

Главная программа должна каждые 15 сек. сообщать сервису, что она работает и с ней все ок. Но как только сервис не получит сигнал - он должен проверить работает ли главная программа еще, и если нет - сервис должен ее снова запустить.

Не подскажите как или каким компонентом можно написать коммуникацию между этими двумя exe'шками?

Да, и все на одном компе, сети нет.

Спасибо!
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Коммуникация двух exe'шек?

Сообщение debi12345 » 04.12.2015 14:06:35

1) MSEgui - IFI-компоненты
2) через HTTP(SSH,..)-сервис (с проблемой аутенификации)
3) через низкий уровень (Indi || Synapse)
4) а лучше всего используя CORBA (если бы проект http://www.m-g.ru/en/corba был допилен)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Коммуникация двух exe'шек?

Сообщение McLion » 04.12.2015 14:09:13

Я тут SimpleIPCServer и SimpleIPCClient нашел, вроде все просто.
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Коммуникация двух exe'шек?

Сообщение debi12345 » 04.12.2015 14:19:18

Я тут SimpleIPCServer и SimpleIPCClient нашел, вроде все просто.

Слишком просто - потом может понадобиться разнос на разные машины, шифрование траффика, и придется все переписывать.
Индустриально-кроссплатформенный стандарт для этих дел - CORBA, на ней IPC делается очень просто...и почему ее в FPC-коммьюнити принципиально невзлюбили ?

Добавлено спустя 12 минут 36 секунд:
Главная программа должна каждые 15 сек. сообщать сервису, что она работает и с ней все ок. Но как только сервис не получит сигнал - он должен проверить работает ли главная программа еще, и если нет - сервис должен ее снова запустить.

В лоб также можно использовать срества "оси" : а именно фишку перезапуска (в винде - в настройках сервиса, а в линуксе - через запуск в "/ect/inittab=> respawn")
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Коммуникация двух exe'шек?

Сообщение gvido » 04.12.2015 15:29:35

Как вариант, оба могут читать базу или какой-то файл, извлекая нужные данные. Например - время и статус-состояние. Вроде бы получится дешево и сердито. :)
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Re: Коммуникация двух exe'шек?

Сообщение McLion » 04.12.2015 15:58:08

debi12345 писал(а):В лоб также можно использовать срества "оси" : а именно фишку перезапуска (в винде - в настройках сервиса, а в линуксе - через запуск в "/ect/inittab=> respawn")


А можно по подробнее, как называется и где точно найти?
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Коммуникация двух exe'шек?

Сообщение debi12345 » 04.12.2015 16:01:04

оба могут читать базу или какой-то файл, извлекая нужные данные

Тогда уже через пайпы, а не файлы :)

Добавлено спустя 36 минут 32 секунды:
McLion писал(а):А можно по подробнее, как называется и где точно найти?

В винде через панель управления и администрирование добраться до служб, в свойствах нужной служб выбрать закладку "восстановление" - там есть опции перезапуска. Если прога не распознается как сервис (написана без соблюдения стандарта для служб), то можно запускать ее тулзой "srvany".
В Линукcе открыть файл "/etc/inittab", далее использовать строки с "respawn" как образец.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Коммуникация двух exe'шек?

Сообщение McLion » 04.12.2015 16:44:05

debi12345 писал(а):в свойствах нужной служб выбрать закладку "восстановление" - там есть опции перезапуска.


А какая служба нужна?
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Коммуникация двух exe'шек?

Сообщение gvido » 04.12.2015 17:46:53

debi12345 писал(а):Тогда уже через пайпы, а не файлы

Тут разницы то нет, писать будет клиент, сервис только читать.
Хотя, с пайпом будет лучше, в никсах, в винде не пробовал....
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Re: Коммуникация двух exe'шек?

Сообщение resident » 04.12.2015 18:18:53

gvido писал(а):Как вариант, оба могут читать базу или какой-то файл, извлекая нужные данные. Например - время и статус-состояние. Вроде бы получится дешево и сердито.

Может связка из пяти мьютексов?
Первый - для самой проги.
Остальные - для каждой четверти минуты - их прога будет создавать и удалять предыдущий каждые 15 секунд при нормальной работе.
Сервис проверять - есть ли мьютекс проги и мьютекс, соотвествующий данной части минуты.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Коммуникация двух exe'шек?

Сообщение Снег Север » 04.12.2015 22:46:50

А в чём проблема сделать обмен на сокетах?
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3053
Зарегистрирован: 27.11.2007 16:14:47

Re: Коммуникация двух exe'шек?

Сообщение McLion » 04.12.2015 23:27:24

Задача уже решена, с помощью SimpleIPCServer и SimpleIPCClient!

Всем рахмет!
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Коммуникация двух exe'шек?

Сообщение olegy » 06.12.2015 19:48:20

McLion писал(а):Задача уже решена, с помощью SimpleIPCServer и SimpleIPCClient!

В линухе - более современно DBus.
В dинде - pipe, sharememory.
olegy
незнакомец
 
Сообщения: 6
Зарегистрирован: 05.12.2015 18:35:07


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 258

Рейтинг@Mail.ru
cron