![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| jimbo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 18.6.2009 Где: Южно-Сахалинск Репутация: нет Всего: нет |
Привет всем!
Написав свою службу, можно ли заставить ее перезапускать саму себя? --------------------
Я не играю в шахматы - в шахматах я борюсь. А.А.Алехин |
|||
|
||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 4 Всего: 23 |
jimbo, можно поподробней?
P.S. Можеш постучатся в асю - чем смогу помогу - у меня щас build длинный идёт и мне скучно Добавлено через 4 минуты и 32 секунды Если ты хочеш её перезапустить после креша, то - ставиш SEH обработчик - вызываеш свою прогу с нужным ключём (чтобы она перезапустилась, как сервис) или вызывеш преготовленный батник или вызывеш трерью прогу, которая вызвет тебя |
|||
|
||||
| jimbo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 18.6.2009 Где: Южно-Сахалинск Репутация: нет Всего: нет |
допустим, у нас есть программа консольная, которая каждую минуту пишет в файл текущее время.
Чтобы не запускать ее постоянно на компе, хочется сделать из программы службу, чтобы она автоматом включалась при включении компьютера и при сбое перезапускалась. Вот тут и вся хитрость. Случаются моменты, когда служба работает, но ничего не пишет в файл. Код приводить бессмысленно, потому что делает он не запись в файл. Вопрос больше из теории, можно ли сделать так, чтобы при возникновении некого события (допустим установка глобальной переменной типа bool в true) наша служба завершала свою работу и снова запускалась? Потому как я понял, при обычном завершении работы службы она уже не запускается, даже если стоит перезапускать всегда в настройках службы --------------------
Я не играю в шахматы - в шахматах я борюсь. А.А.Алехин |
|||
|
||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 4 Всего: 23 |
Если просто перезапустится, то делаеш в проге какой-то именнованый
обьект ядра, далее вызываеш свой бинарь с нужными ключами, который по обьекту ядра ждёт пока предыдущий интсанс завернётся и запускает тебя вновь Добавлено @ 13:45 - тут либо как в добавлении к первому посту: поймал SEH и по удобной цепочке - либо писать GAURD который будет следить есть ли прога и если нет - подымать ( к примеру, Interbase так и делает, ещё у MS SQL SERVER такое есть) Это сообщение отредактировал(а) SenkraD - 4.6.2010, 13:45 |
|||
|
||||
| jimbo |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 18.6.2009 Где: Южно-Сахалинск Репутация: нет Всего: нет |
Если поставить в настройках службы "перезапускать всегда", то после креша она разве не запустится?
но мне надо перезапуск произвести при рабочей службе. или может я тебя неправильно понял? Добавлено через 1 минуту и 59 секунд
Мне пока только такой вариант идет в голову --------------------
Я не играю в шахматы - в шахматах я борюсь. А.А.Алехин |
||||||
|
|||||||
| SenkraD |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 4 Всего: 23 |
а потом запустится вновь и тогда мой сценарий сюда подходит.
то сами сервисы и сервис манагер базовый такого делать не позволяют
Также знаю, что в паре систем быстрой оплаты и пополнения счетов, также взят этот подход (одну когда-то сам писал, о других расказали) Это сообщение отредактировал(а) SenkraD - 4.6.2010, 13:59 |
||||||
|
|||||||
| 12usver12 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: 1 Всего: 1 |
пиши шеллкод, который будет перезапускать, инжектируй в проводник
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Вот уж антивирусы порадуются PS. А поставить в настройках службы "перезапускать всегда" и просто завершить процесс точно не работает? NB. При проверки надо иметь немного терпения - служба перезапускается не сразу |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |