LINUX.ORG.RU

Двойной fork()


0

0

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

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

★★★

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

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

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

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

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

kondor ★★★
() автор топика
Ответ на: комментарий от Die-Hard

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
()
Ответ на: комментарий от Onanim

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

kondor ★★★
() автор топика
Ответ на: комментарий от kondor

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

Onanim
()
Ответ на: комментарий от Onanim

2Onanim:

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

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

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

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