Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

sigset_t mask;

static struct sigaction act;

Создадим полный набор сигналов, исключив из него SIGINT:

sigfillset(&mask);

sigdelset(&mask,SIGINT);

Блокируем все сигналы:

sigprocmask(SIG_SETMASK,&mask,NULL);

Определяем новый обработчик для SIGINT:

act.sa_handler=stop_daemon;

    sigaction(SIGINT,&act,NULL);

А теперь стартуем:

    start_log(f);

    packet_loop();

    exit(1);

}

LOG-файл

Нам осталось рассмотреть функции для ведения log-файла. Их три:

n  start_log – запись о начале выполнения процесса-демона;

n  fill_log – запись информации о блокировании IP-пакета;

n  stop_log – запись об остановке выполнения процесса-демона.

Каждая из этих функций фиксирует текущее время возникновения того или иного события.

Все три функции разместим в файле sf_log.c.

#include <stdio.h>

#include <sys/types.h>

#include <unistd.h>

#include <fcntl.h>

#include <time.h>

#include <sys/socket.h>

#include <linux/in.h>

#define BSIZE 80

Все функции принимают в качестве аргумента дескриптор log-файла, в который будет осуществляться запись информации. В случае удачного завершения операции все функции возвращают 0, в случае ошибки -1.

Функция start_log

int start_log(int f)

{

    char buf[BSIZE];

    time_t start_t;

Обнулим буфер и получим текущее время:

bzero(buf,BSIZE);

    time(&start_t);

Формируем буфер и записываем его в log-файл:

sprintf(buf,"Daemon started at %s", ctime(&start_t));

    if(write(f,buf,strlen(buf)) < 0) return (-1);

    return (0);

}

Функция stop_log

Функции start_log и stop_log практически не отличаются друг от друга, кроме имен переменных, поэтому привожу код без комментариев:

int stop_log(int f)

{

    char buf[BSIZE];

    time_t stop_t;

 

    bzero(buf,BSIZE);

    time(&stop_t);

    sprintf(buf,»Daemon stoped at %s», ctime(&stop_t));


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100