Я хочу хорошо понять следующий код:
/* Become deamon + unstoppable and no zombies children (= no wait()) */
if(fork() != 0) return 0; /* Parent returns OK to shell */
signal(SIGCLD, SIG_IGN); /* ignore child death */
signal(SIGHUP, SIG_IGN); /* ignore terminal hangups */
for(i = 0; i < 32; i++) close(i); /* close open files */
setpgrp(); /* break away from process group */
Вот как я понимаю приведенный выше код:
1-я строка: Создание дочернего процесса и завершение родительского процесса, поэтому родительский родительский процесс возвращается к оболочке, а дочерний процесс продолжает выполнение программы в фоновом режиме.
2-я строка: Игнорировать сигнал, который должен быть отправлен родительскому процессу (который управляет терминалом), когда дочерний процесс (который выполняет программу) завершается. Я думаю, что эта линия позволит избежать появления детей зомби?
3-я строка: Я прочитал, что он игнорирует зависание POSIX, и я не уверен, что именно.
4-я строка: закрытие открытых файлов с файлами дескрипторов от 0 до 31 (я не уверен, почему от 0 до 31)
5-я строка: Понятия не имею, что он делает.
Не могли бы вы помочь мне хорошо понять этот код? Заранее спасибо:)