The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Пишу свой шедулер, !*! se7en.ru, 27-Дек-04, 16:21  [смотреть все]
Понадобилось решить следующую задачу - надо запускать перловый скрипт раз в 5 секунд.
Т.к. cron интервалы меньше 1 минуты не понимает написал свою програмку.
В принципе всё работает, но мне кажется что дурью маюсь и ответ лежит на поверхности. Как из подобных ситуаций выходят гуру?

Кому интересно програмка:
#include <unistd.h>
#include <stdio.h>
#include <syslog.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/cdefs.h>
#include <sys/_null.h>
#include <sys/_types.h>

void fsignal(int sig) {
  switch(sig) {
    case SIGALRM:
      system("/home/cgi/server.pl");
      break;
    case SIGTERM:
    case SIGINT:
    case SIGQUIT:
      syslog(LOG_NOTICE,"DAEMON_TST daemon stopped on signal %d",sig);
      closelog();
      exit(0);
      break;
    default:
      break;
  }
}

int main(int argc,char** argv) {
  struct itimerval val;
//  setgid(65534);
//  setuid(65534);
//  chdir("/");
  fclose(stdin);
  fclose(stdout);
  fclose(stderr);
  if(fork())
    exit(0);
  setsid();
  int j;
  for(j=1; j<32; j++) {
    signal(j,fsignal);
  }
  syslog(LOG_NOTICE,"DAEMON_TST daemon started");
  val.it_interval.tv_sec = 5;
  val.it_interval.tv_usec = 0;
  val.it_value.tv_sec = 5;
  val.it_value.tv_usec = 0;
  setitimer(ITIMER_REAL, &val, 0);
  while(1) pause();
}




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру