Вопросы по ЛР1. Демоны - chrislvt/OS GitHub Wiki

Q: Единственность демона, почему управляющего терминала быть не должно?

A: Потому что! Зачем тебе два и более работающих демона, которые выполняют одну и ту же функцию? Это же бесполезно. Мы делаем один, вызываем его (он просыпается), а дальше выполняет присущие ему действия. И дальше спать. Никого не напоминает? Почему управляющего нет? А зачем? (впишите сюда адекватную причину этого не делать кроме как отсутствие необходимости управлять демоном вне программ. Я могу быть тупым.) Если ты можешь в английский - вот

Если вообще ничего не помнишь про терминалы

Q: Зачем нужно менять текущий каталог?

A: В принципе это не обязательно, но является хорошей практикой освобождать неиспользуемые ресурсы. Например, если это не сделать, то нельзя будет отмонтировать ФС с каталогом откуда пользователь запустил демона.

Q: Зачем и где вызываем дочерний процесс?

A: ---

Q: Зачем маску сбрасываем?

A: Полтора метра

Алгоритм «демонизации», опустив обработку ошибок и прочее, можно записать в 4 строчки. Причём непосредственно к демонизации относится только первая, и частично вторая, а остальные — лишь желательная подчистка.

if( fork() ) exit (0); // Собственно демонизация setsid (); // отвязка от управляющего терминала if( fork() ) exit (0); // самозащита, чтобы случайно не подцепить новый УТ во время работы cleanup_everything (); // различная очистка и освобождение всех не нужных ресурсов