[c++] демонизация процесса - помогите разобраться

Yulka-MOl

Хочется написать программу, которая при запуске переводит себя в фоновый режим, т е становится процессом-демоном.
Речь о Linux.
Что-нибудь совсем простенькое, типа helloworld.
Сбросьте ссылочки на код в инете или выложите здесь, если у кого есть.
Заранее спасибо!

Ober

Linux Daemon Writing HOWTO?

Yulka-MOl

мне пример кода нужен.
Завтра буду по книжке разбираться подробно,
пока просто хочется оценить насколько это запарно.

Ober

вот тебе даже ссылка, там код есть.
http://www.linuxprofilm.com/articles/linux-daemon-howto.html
p.s. гугл иногда бывает другом человека, не стоит это забывать.

Yulka-MOl

благодарствую.

Ober

вот тебе еще немного мути на эту тему...
http://www.enderunix.org/docs/eng/daemon.php
и еще:
http://www.erlenstar.demon.co.uk/unix/faq_2.html

Werdna

 
if (fork exit(0);
setsid;
pid_t myPID = getpid;

всё, больше тебе ничего не надо, разве что сигналы перехватить.
 
signal(SIGINT, actionOnSignal);
signal(SIGQUIT, actionOnSignal);
signal(SIGTERM, actionOnSignal);
signal(SIGSEGV, actionOnSignal);
signal(SIGHUP, actionOnSignal);
signal(SIGUSR1, actionOnSignal);
signal(SIGUSR2, actionOnSignal);
signal(SIGWINCH, actionOnSignal);
signal(SIGILL, actionOnSignal);
signal(SIGTRAP, actionOnSignal);
signal(SIGABRT, actionOnSignal);
signal(SIGBUS, actionOnSignal);
signal(SIGCHLD, actionOnSignal);
signal(SIGURG, actionOnSignal);
signal(SIGIO, SIG_IGN);
signal(SIGPIPE, SIG_IGN);

ну сама сигналистая функция такая:
 
void actionOnSignal(int sig)
{
signal(sig, SIG_IGN);

// lalala -- do everything you want
// no po nekotorym signalam nado delat' exit;
exit(0);
}

Landstreicher

Я слышал, что sigaction(2) котируется больше, чем signal(2).

Werdna

Я слышал, что sigaction(2) котируется больше, чем signal(2).

А в чём прикол? Тут по-моему не такая штука, чтобы ещё думать что использовать.

Landstreicher

> А в чём прикол? Тут по-моему не такая штука, чтобы ещё думать что использовать.
Ну всякие там хитрые фишки с атомарностью. Типа новый сигнал пришел во время, когда обработчик старого уже начал работать, но еще не вызвал signal.

Werdna

Да, сейчас погуглил, соглашусь с тобой. Век живи, век учись...

Yulka-MOl

да нет, вопрос на самом деле глубокий.
демонизировать в итоге надо tcp/ip сервер

Ivan8209

> демонизировать в итоге надо tcp/ip сервер
Для этого есть daemontools.
---
...Я работаю антинаучным аферистом...

Werdna

Для этого есть daemontools.

Пиздец ты долбоёб! по форку + екзеку на ловлю ОДНОГО СОЕДИНЕНИЯ?
А вообще, daemontools — отвратительно написанная вещь. Только для qmail она и годится...

Ivan8209

> по форку + екзеку на ловлю ОДНОГО СОЕДИНЕНИЯ?
Ты вообще пишешь не на ассемблере и для suxx.
---
...Я работаю антинаучным аферистом...
Оставить комментарий
Имя или ник:
Комментарий: