Практика закрытия всех открытых файловых дескрипторов является следствием возможности того, что процесс деамонизации наследует некоторые открытые файлы от родительского процесса.Например, вы можете открыть десятки файлов в одном процессе (скажем, с помощью os.open()
) или затем вызвать подпроцесс, который их наследует.Вероятно, у вас, как подпроцесса, нет простого способа узнать, какие файловые дескрипторы полезны из родительского процесса (если вы не передаете это вместе с аргументами командной строки), и вам определенно не нужны stdin, stdout или stderr, поэтомуСовершенно разумно, прежде чем что-либо делать, закрыть все открытые файлы.
Затем процесс деамонизации предпримет некоторые дополнительные шаги, чтобы стать демоном (как изложено в PEP).
Один разпроцесс полностью отсоединен от любого терминала, он может запускать , открывая файлы и соединения по мере необходимости.Он откроет свои файлы журналов, свои файлы конфигурации и свои сетевые подключения.
Другие упоминали, что с помощью инструмента twistd
все это довольно круто, и вы неТ нужно использовать дополнительный модуль.Если вы не хотите использовать twistd
(по какой-то причине), но хотите использовать twisted, вы можете использовать что-то внешнее, но сначала вы должны деамонизировать , а затем импортировать twisted и остальные вашиКод приложения и открытые сетевые подключения последними.