Странное закрытие дескриптора в некоторых программах Linux - PullRequest
3 голосов
/ 29 ноября 2010

При создании некоторых демонов Linux (например, sendmail) я заметил, что некоторые из них будут вызывать close () для ряда дескрипторов (обычно в диапазоне от 3 до 255) в самом начале. Это делается специально или это какой-то побочный эффект от чего-то другого?

1 Ответ

3 голосов
/ 29 ноября 2010

Обычно это делается для того, чтобы сделать процесс демоном.

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

Демонизация процесса также потребует ряда других действий, но эти действия выходят за рамки этого вопроса.

...