Автор Тема: Служба Windows на Perl  (Прочитано 7998 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн cr4ck3r

  • Фанат Perl
  • Постоялец
  • ***
  • Сообщений: 146
  • +0/-0
  • 2
    • Просмотр профиля
    • http://perlmonks.org.ru
Служба Windows на Perl
« : 07 Июня 2006, 16:09:58 »
Написал службу для windows, использовал PerlSvc для компиляции... Все работает хорошо и прекрасно (инсталиться, деинсталиться)... Если из консоли управления службами (mmc) запускаю ее - то все ок, но если нажимаю:"Остановить", то она не останавливается...
Кто-нибудь сталкивался с такими вещами?
Ворота в perl - perlmonks.org.ru

Оффлайн BonJorno

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 52
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Служба Windows на Perl
« Ответ #1 : 08 Июня 2006, 07:16:50 »
Когда-то писал службы, правда то было на делфи. У служб строго регламентированная структура, тоесть  набор жизненно необходимых процедур для управления службой. Т.о должна быть и процедура управляющая событием "Остановить". Обо всем этом широко размусолено на делфийских форумах.

Оффлайн cr4ck3r

  • Фанат Perl
  • Постоялец
  • ***
  • Сообщений: 146
  • +0/-0
  • 2
    • Просмотр профиля
    • http://perlmonks.org.ru
Служба Windows на Perl
« Ответ #2 : 08 Июня 2006, 10:30:51 »
Мне кажеться я начинаю понимать в чем проблема...
Вот часть моего кода:

sub Startup {
## connect to database ##
while(ContinueRun()) {
my $dsn="driver={SQL Server};Server=$param->{\'SQL_HOST\'};database=$param->{\'DB_NAME\'};uid=$param->{\'DB_USER\'};pwd=$param->{\'DB_PASS\'};";
my $dbh=DBI->connect("dbi:ODBC:$dsn") || die "$DBI::errstr\\n";
### prepare socket ###
my $protocol=getprotobyname(\'tcp\');
my $host=inet_aton($param->{\'AV_HOST\'}) or die "$param->{AV_HOST}: unknown host";
socket(SOCK,AF_INET,SOCK_STREAM,$protocol) or die "socket() failed: $!\\n";
my $dest_addr=sockaddr_in($param->{\'AV_PORT\'},$host);
connect(SOCK,$dest_addr) or die "connect() failed: $!\\n";
SOCK->autoflush(1);

while() {
chomp();
insertDB($dbh,$_);
print "." unless (RunningAsService());
}
close(SOCK);
$dbh->disconnect();
}
}

функция Startup запускается сразу же после старта службы,
функция ContinueRun возвращает false, если служба получает команду Остановиться (STOP, SHUTDOWN и т.п)... но так как у меня идет далее еще один цикл (считывающий строки из сокета(порт тел. станции Avaya)), то видимо из этого цикла выхода нет... Как обработать эту ситуацию пока не ясно...
Ворота в perl - perlmonks.org.ru

Оффлайн askinfra

  • Новичок
  • *
  • Сообщений: 1
  • +0/-0
  • Пол: Мужской
    • Просмотр профиля
Re: Служба Windows на Perl
« Ответ #3 : 25 Мая 2020, 00:04:39 »
Друзья, вечер добрый.
Пожалуйста, порекомендуйте книжку, в которой в частности описано создание служб для Windows на языке perl5.
« Последнее редактирование: 25 Мая 2020, 00:06:48 от askinfra »

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28