Коммуникация двух exe'шек?
Модератор: Модераторы
Коммуникация двух exe'шек?
Есть такой план. Хочу написать программу-терминал и невидимую сервис-программку (служба или как она там на русском).
Главная программа должна каждые 15 сек. сообщать сервису, что она работает и с ней все ок. Но как только сервис не получит сигнал - он должен проверить работает ли главная программа еще, и если нет - сервис должен ее снова запустить.
Не подскажите как или каким компонентом можно написать коммуникацию между этими двумя exe'шками?
Да, и все на одном компе, сети нет.
Спасибо!
Главная программа должна каждые 15 сек. сообщать сервису, что она работает и с ней все ок. Но как только сервис не получит сигнал - он должен проверить работает ли главная программа еще, и если нет - сервис должен ее снова запустить.
Не подскажите как или каким компонентом можно написать коммуникацию между этими двумя exe'шками?
Да, и все на одном компе, сети нет.
Спасибо!
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
1) MSEgui - IFI-компоненты
2) через HTTP(SSH,..)-сервис (с проблемой аутенификации)
3) через низкий уровень (Indi || Synapse)
4) а лучше всего используя CORBA (если бы проект http://www.m-g.ru/en/corba был допилен)
2) через HTTP(SSH,..)-сервис (с проблемой аутенификации)
3) через низкий уровень (Indi || Synapse)
4) а лучше всего используя CORBA (если бы проект http://www.m-g.ru/en/corba был допилен)
Я тут SimpleIPCServer и SimpleIPCClient нашел, вроде все просто.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Я тут SimpleIPCServer и SimpleIPCClient нашел, вроде все просто.
Слишком просто - потом может понадобиться разнос на разные машины, шифрование траффика, и придется все переписывать.
Индустриально-кроссплатформенный стандарт для этих дел - CORBA, на ней IPC делается очень просто...и почему ее в FPC-коммьюнити принципиально невзлюбили ?
Добавлено спустя 12 минут 36 секунд:
Главная программа должна каждые 15 сек. сообщать сервису, что она работает и с ней все ок. Но как только сервис не получит сигнал - он должен проверить работает ли главная программа еще, и если нет - сервис должен ее снова запустить.
В лоб также можно использовать срества "оси" : а именно фишку перезапуска (в винде - в настройках сервиса, а в линуксе - через запуск в "/ect/inittab=> respawn")
Как вариант, оба могут читать базу или какой-то файл, извлекая нужные данные. Например - время и статус-состояние. Вроде бы получится дешево и сердито. 
debi12345 писал(а):В лоб также можно использовать срества "оси" : а именно фишку перезапуска (в винде - в настройках сервиса, а в линуксе - через запуск в "/ect/inittab=> respawn")
А можно по подробнее, как называется и где точно найти?
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
оба могут читать базу или какой-то файл, извлекая нужные данные
Тогда уже через пайпы, а не файлы
Добавлено спустя 36 минут 32 секунды:
McLion писал(а):А можно по подробнее, как называется и где точно найти?
В винде через панель управления и администрирование добраться до служб, в свойствах нужной служб выбрать закладку "восстановление" - там есть опции перезапуска. Если прога не распознается как сервис (написана без соблюдения стандарта для служб), то можно запускать ее тулзой "srvany".
В Линукcе открыть файл "/etc/inittab", далее использовать строки с "respawn" как образец.
debi12345 писал(а):в свойствах нужной служб выбрать закладку "восстановление" - там есть опции перезапуска.
А какая служба нужна?
debi12345 писал(а):Тогда уже через пайпы, а не файлы
Тут разницы то нет, писать будет клиент, сервис только читать.
Хотя, с пайпом будет лучше, в никсах, в винде не пробовал....
gvido писал(а):Как вариант, оба могут читать базу или какой-то файл, извлекая нужные данные. Например - время и статус-состояние. Вроде бы получится дешево и сердито.
Может связка из пяти мьютексов?
Первый - для самой проги.
Остальные - для каждой четверти минуты - их прога будет создавать и удалять предыдущий каждые 15 секунд при нормальной работе.
Сервис проверять - есть ли мьютекс проги и мьютекс, соотвествующий данной части минуты.
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
А в чём проблема сделать обмен на сокетах?
Задача уже решена, с помощью SimpleIPCServer и SimpleIPCClient!
Всем рахмет!
Всем рахмет!
McLion писал(а):Задача уже решена, с помощью SimpleIPCServer и SimpleIPCClient!
В линухе - более современно DBus.
В dинде - pipe, sharememory.
