LINUX.ORG.RU

Двойной fork()


0

0

У Стивенсона в книге есть пример функции daemon_init(), которая создает демона. В ней используется используется двойной вызов fork(), якобы для надежности, что бы наверняка :).

Меня интересует насколько оправдана такая реализация с двумя вызовами fork()? Спасибо.

★★★

Re: Двойной fork()

Ну, типа, все так делают.

А как ты иначе передашь процесс init'у (если не хочешь убивать породивший процесс)?

Die-Hard ★★★★★ ()
Ответ на: Re: Двойной fork() от Die-Hard

Re: Двойной fork()

Хм... наверное я все-таки чего-то недопонимаю, ибо вот, например, здесь: http://www.linuxprofilm.com/articles/linux-daemon-howto.html используется исключительно один fork(), и я так тоже до этого делал -- правда в теле main(), а не из сторонней функции.

Ведь тут тоже процесс передается init'у, imho.

kondor ★★★ ()
Ответ на: Re: Двойной fork() от Die-Hard

Re: Двойной fork()

2Die-Hard:

Осмелюсь немного поправить ;-)

Смысл double fork в том, чтобы процесс-демон никогда бы не смог
получить controlling terminal.
Честно говоря лень самому описывать, краткое изложение имеется в
Unix Programmin FAQ:
http://www.erlenstar.demon.co.uk/unix/faq_toc.html
1.7 How do I get my program to act like a daemon?

У Стивенса в APUE (AFAIK русского перевода увы нет) это тоже
описано (книжка на работе, так что точную цитату привести не могу).
Возможно и в Linux Application Development это описано (опять-таки
книжка на работе, проверить не могу).

Этот второй fork не обязателен в том смысле, что если ты сам пишешь
этого демона, то ты и так знаешь - будет твой демон пытаться
получить controlling terminal или нет.

HTH

Onanim ()
Ответ на: Re: Двойной fork() от Onanim

Re: Двойной fork()

To Onanim:
Благодарю. Вроде бы понял. Жаль, что APUE не переведена, иначе бы приобрел в бумажном виде. Спасибо еще раз.

kondor ★★★ ()
Ответ на: Re: Двойной fork() от kondor

Re: Двойной fork()

BTW в прошлом году вышло второе издание APUE (увы, естественно, уже
без Стивенса). Впрочем Stephen Rago (соавтор нового издания) тоже
IMHO вполне авторитетная личность.
Первому изданию уже лет наверное 15, давно пора было обновить.
Я сам нового издания не видел, но "судя по каментам" - там все как надо :-)))

Onanim ()
Ответ на: Re: Двойной fork() от Onanim

Re: Двойной fork()

2Onanim:

Ну да, про это я забыл.

Я его (второй форк) всегда делаю просто потому, что мне по жизни были нужны только демоны, которые я запускаю из процесса, который еще потом долго живет сам по себе.

Только сейчас дошло, что это моя специфика, и демоны, вообще говоря, не совсем для этого :)

Die-Hard ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.