Мне кажеться я начинаю понимать в чем проблема...
Вот часть моего кода:
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)), то видимо из этого цикла выхода нет... Как обработать эту ситуацию пока не ясно...