Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Vadim Goncharov                      2:5020/400     11 Mar 2006  18:55:46
 To : Eugene Grosbein
 Subject : arpwatch signal handling (Was: Учет тpаффика)
 -------------------------------------------------------------------------------- 
 
 Hi Eugene Grosbein! 
 
 On Fri, 10 Mar 2006 23:35:40 +0300; Eugene Grosbein wrote about 'Re: Учет
 тpаффика':
 
  AB>>>>>> Я поставил arpwatch из портов. Hичего не трогал и он нормально
  AB>>>>>> запускается.
  EG>>>>> Hа четверке у всех запускается.
  AB>>>> А почему потом сломали?
  EG>>> Пока не знаю, не копал.
  VG>> Возможно, правомернее будет другой вопрос - почему это на четверке он
  VG>> вдруг работает [хотя не должен].
  EG> Почему это не должен? Как любой демонизирующийся процесс, он должен
  EG> и работает. Вот линуксовый SyBase не демонизируется с точки зрения
  EG> четверки и получает HUP, от чего и дохнет. В отличие от Oracle
  EG> на той же четверке.
  EG> Вопрос именно в том, почему он в 5.x и далее этого не делает.
 
 Код у него какой-то, хм.. странный.
 
 Он устанавливает все рассматриваемые сигналы:
 
   (void)setsignal(SIGINT, die);
   (void)setsignal(SIGTERM, die);
   (void)setsignal(SIGHUP, die);
 
 на одну процедуру:
 
 die(int signo)
 {
 
   syslog(LOG_DEBUG, "exiting");
   checkpoint(0);
   exit(1);
 }
 
 А вот, собственно, фрагмент демонизации:
 
    /* Drop into the background if not debugging */
    if (!debug) {
       pid = fork();
       if (pid < 0) {
        syslog(LOG_ERR, "main fork(): %m");
        exit(1);
       } else if (pid != 0)
        exit(0);
       (void)close(fileno(stdin));
       (void)close(fileno(stdout));
       (void)close(fileno(stderr));
 #ifdef TIOCNOTTY
       fd = open("/dev/tty", O_RDWR);
       if (fd >= 0) {
        (void)ioctl(fd, TIOCNOTTY, 0);
        (void)close(fd);
       }
 #else
       (void) setsid();
 #endif
    }
 
 В то время, как еще дедушка Стивенс рекомендует использовать
 последовательность fork(); setsid(); fork(); для надежного
 и переносимого отцепления от терминала, а TIOCNOTTY в мане на 5.4
 вообще помечен как obsolete.
 Соответственно, по идее надо бы экспериментально проверить, какие
 сигналы прилетают программе, запускаемой из rc-скриптов. У меня 4-ки под
 рукой нет
 
 -- 
 WBR, Vadim Goncharov. ICQ#166852181       mailto:vadim_nuclight@mail.ru
 [Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight]
 --- slrn/0.9.8.1 on FreeBSD 4.11/i386
  * Origin: Nuclear Lightning @ Tomsk, TPU AVTF Hostel (2:5020/400@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 arpwatch signal handling (Was: Учет тpаффика)   Vadim Goncharov   11 Mar 2006 18:55:46 
 arpwatch signal handling (Was: Учет тpаффика)   Alex Semenyaka   12 Mar 2006 18:13:30 
 Re: arpwatch signal handling (Was: Учет тpаффика)   Vadim Goncharov   13 Mar 2006 02:29:11 
Архивное /ru.unix.bsd/1035967512a09.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional