В чем разница между вызовом daemon() и вызовом fork(), setsid(), fork() и т.д.?

Я смотрел на создание Unix dæmons, и, похоже, есть два метода. Самый длинный, который, кажется, всплывает при поиске - это вызвать fork(), setsid(), fork() снова, chdir() в безопасное место, установить umask() и, наконец, close() stdin, stdout и stderr.

Выполнение man daemon, однако, приводит к информации о функции daemon(), которая, похоже, делает все то же самое, что и выше. Есть ли какие-либо различия между этими двумя подходами или daemon() - это просто удобная функция, которая делает то же самое, что и длинный извилистый метод? Может ли любой из них быть лучше, особенно для начинающего программиста на C?

11
задан Scott 4 October 2011 в 08:51
поделиться