Модераторы: xvr

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание демона, создание демона 
:(
    Опции темы
MAKCim
Дата 25.12.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



zabivator
Зачем нам M$, если мы пишем демона и не более


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
kirjanov
Дата 25.12.2006, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: 3
Всего: 15



Код

/*
 * The mother of all processes.
 */
int
main(int argc, char *argv[])
{
        int c;
        struct sigaction sa;
        sigset_t mask;

        /* Dispose of random users. */
        if (getuid() != 0) {
                (void)fprintf(stderr, "init: %s\n", strerror(EPERM));
                exit (1);
        }

        /* System V users like to reexec init. */
        if (getpid() != 1) {
                (void)fprintf(stderr, "init: already running\n");
                exit (1);
        }

        /*
         * Note that this does NOT open a file...
         * Does 'init' deserve its own facility number?
         */
        openlog("init", LOG_CONS|LOG_ODELAY, LOG_AUTH);

        /*
         * Create an initial session.
         */
        if (setsid() < 0)
                warning("initial setsid() failed: %m");

        /*
         * Establish an initial user so that programs running
         * single user do not freak out and die (like passwd).
         */
        if (setlogin("root") < 0)
                warning("setlogin() failed: %m");

        /*
         * This code assumes that we always get arguments through flags,
         * never through bits set in some random machine register.
         */
        while ((c = getopt(argc, argv, "sf")) != -1)
                switch (c) {
                case 's':
                        requested_transition = single_user;
                        break;
                case 'f':
                        runcom_mode = FASTBOOT;
                        break;
                default:
                        warning("unrecognized flag '-%c'", c);
                        break;
                }

        if (optind != argc)
                warning("ignoring excess arguments");

        /*
         * We catch or block signals rather than ignore them,
         * so that they get reset on exec.
         */
        handle(badsys, SIGSYS, 0);
        handle(disaster, SIGABRT, SIGFPE, SIGILL, SIGSEGV,
            SIGBUS, SIGXCPU, SIGXFSZ, 0);
        handle(transition_handler, SIGHUP, SIGTERM, SIGTSTP, SIGUSR1,
            SIGUSR2, 0);
        handle(alrm_handler, SIGALRM, 0);
        sigfillset(&mask);
        delset(&mask, SIGABRT, SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGSYS,
            SIGXCPU, SIGXFSZ, SIGHUP, SIGTERM, SIGUSR1, SIGUSR2,
            SIGTSTP, SIGALRM, 0);
        sigprocmask(SIG_SETMASK, &mask, NULL);
        memset(&sa, 0, sizeof sa);
        sigemptyset(&sa.sa_mask);
        sa.sa_flags = 0;
        sa.sa_handler = SIG_IGN;
        (void) sigaction(SIGTTIN, &sa, NULL);
        (void) sigaction(SIGTTOU, &sa, NULL);

        /*
         * Paranoia.
         */
        close(STDIN_FILENO);
        close(STDOUT_FILENO);
        close(STDERR_FILENO);

        /*
         * Start the state machine.
         */
        transition(requested_transition);

        /*
         * Should never reach here.
         */
        exit(1);
}

из OpenBSD CVS - вполне туториал  smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0548 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.