Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> служба windows 
:(
    Опции темы
jimbo
Дата 4.6.2010, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 18.6.2009
Где: Южно-Сахалинск

Репутация: нет
Всего: нет



Привет всем!

Написав свою службу, можно ли заставить ее перезапускать саму себя?
--------------------
Я не играю в шахматы - в шахматах я борюсь. А.А.Алехин
PM MAIL WWW   Вверх
SenkraD
Дата 4.6.2010, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 4
Всего: 23



jimbo,  можно поподробней?

P.S. Можеш постучатся в асю - чем смогу помогу -
у меня щас build длинный идёт и мне скучно smile

Добавлено через 4 минуты и 32 секунды
Если ты хочеш её перезапустить после креша, то
    - ставиш SEH обработчик
    - вызываеш свою прогу с нужным ключём (чтобы
      она перезапустилась, как сервис) или вызывеш
      преготовленный батник или вызывеш трерью прогу,
      которая вызвет тебя


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
jimbo
Дата 4.6.2010, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 18.6.2009
Где: Южно-Сахалинск

Репутация: нет
Всего: нет



допустим, у нас есть программа консольная, которая каждую минуту пишет в файл текущее время. 

Чтобы не запускать ее постоянно на компе, хочется сделать из программы службу, чтобы она автоматом включалась при включении компьютера и при сбое перезапускалась.

Вот тут и вся хитрость. Случаются моменты, когда служба работает, но ничего не пишет в файл. Код приводить бессмысленно, потому что делает он не запись в файл. 

Вопрос больше из теории, можно ли сделать так, чтобы при возникновении некого события (допустим установка глобальной переменной типа bool в true) наша служба завершала свою работу и снова запускалась? Потому как я понял, при обычном завершении работы службы она уже не запускается, даже если стоит перезапускать всегда в настройках службы
--------------------
Я не играю в шахматы - в шахматах я борюсь. А.А.Алехин
PM MAIL WWW   Вверх
SenkraD
Дата 4.6.2010, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 4
Всего: 23



Если просто перезапустится, то делаеш в проге какой-то именнованый
обьект ядра, далее вызываеш свой бинарь с нужными ключами, который
по обьекту ядра ждёт пока предыдущий интсанс завернётся и запускает
тебя вновь

Добавлено @ 13:45
Цитата(jimbo @  4.6.2010,  13:40 Найти цитируемый пост)
Вопрос больше из теории, можно ли сделать так, чтобы при возникновении некого события (допустим установка глобальной переменной типа bool в true) наша служба завершала свою работу и снова запускалась? Потому как я понял, при обычном завершении работы службы она уже не запускается, даже если стоит перезапускать всегда в настройках службы
    - тут либо как в добавлении к первому посту: поймал SEH и по удобной цепочке
    - либо писать GAURD который будет следить есть ли прога и если нет - подымать
      ( к примеру, Interbase так и делает, ещё у MS SQL SERVER такое есть)


Это сообщение отредактировал(а) SenkraD - 4.6.2010, 13:45


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
jimbo
Дата 4.6.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 18.6.2009
Где: Южно-Сахалинск

Репутация: нет
Всего: нет



Цитата

Если ты хочеш её перезапустить после креша, то


Если поставить в настройках службы "перезапускать всегда", то после креша она разве не запустится?

Цитата

предыдущий интсанс завернётся 


но мне надо перезапуск произвести при рабочей службе. или может я тебя неправильно понял?

Добавлено через 1 минуту и 59 секунд
Цитата

или вызывеш
      преготовленный батник или вызывеш трерью прогу,
      которая вызвет тебя 


Мне пока только такой вариант идет в головуsmile Но что-то мне кажется, что это неправильно с точки зрения "перезапуска служб")) Может есть что-то более корректное, чем программа, которая контролит другую программу?
--------------------
Я не играю в шахматы - в шахматах я борюсь. А.А.Алехин
PM MAIL WWW   Вверх
SenkraD
Дата 4.6.2010, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 4
Всего: 23



Цитата(jimbo @  4.6.2010,  13:46 Найти цитируемый пост)
но мне надо перезапуск произвести при рабочей службе. или может я тебя неправильно понял?
если я правильно понимаю перезапуск, то сначала нужно завершиться,
а потом запустится вновь и тогда мой сценарий сюда подходит.

Цитата(jimbo @  4.6.2010,  13:46 Найти цитируемый пост)
 Но что-то мне кажется, что это неправильно с точки зрения "перезапуска служб"))
на сколько мне изветно, а с службами я успел наработатся,
то сами сервисы и сервис манагер базовый такого делать не позволяют

Цитата(jimbo @  4.6.2010,  13:46 Найти цитируемый пост)
Может есть что-то более корректное, чем программа, которая контролит другую программу?
А чем плохой вариант? - Много серверных продуктов так и делают.
Также знаю, что в паре систем быстрой оплаты и пополнения счетов,
также взят этот подход (одну когда-то сам писал,  о других расказали)


Это сообщение отредактировал(а) SenkraD - 4.6.2010, 13:59


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
12usver12
Дата 5.6.2010, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 5.1.2007

Репутация: 1
Всего: 1



пиши шеллкод, который будет перезапускать, инжектируй в проводник  smile 
PM MAIL   Вверх
xvr
Дата 6.6.2010, 10:11 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(12usver12 @ 5.6.2010,  23:15)
пиши шеллкод, который будет перезапускать, инжектируй в проводник  smile

Вот уж антивирусы порадуются  smile 

PS. А поставить в настройках службы "перезапускать всегда" и просто завершить процесс точно не работает?
NB. При проверки надо иметь немного терпения - служба перезапускается не сразу  smile 


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0733 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.