Я не знаю, почему вы считаете, fcntl () подходит к этому. Чтобы закрыть FD использовать CLOSE ().
Это абсолютно необходимо, чтобы в
демон закрыть FD в 0, 1 и 2. После этого, как говорят юристы, "разумные умы могут расходиться". В те дни, когда мы были ограничены 64 FD's, было разумным просто петля ссылающимся CLOSE () о них все. Если бы я был, чтобы написать
демон, Да я думаю, что я хотел бы использовать получить getconf (_SC_OPEN_MAX), чтобы получить максимум возможного FD и петли ссылающимся CLOSE () на каждую последнюю. Это может быть тысяч закрыть () звонки, которые не являются необходимыми, но CLOSE () не очень быстро, если ссылаться против не-открытых FD.
Если они закрытие STDIN, вывода и STDERR, я хотел бы сказать, что их позиция является разумным. Но я считаю, что они будут иметь трудное время производство какого-либо языка в
POSIX , которая поддерживает их. Определенный артикль
POSIX Стандарт он-лайн, и мы имеем ссылку на него на нашей домашней странице. Именно раздел, который они ссылаются?
Она должна быть очень легко решить проблему, хотя. Нельзя ли изменить приложение-сервер, чтобы не оставить дополнительный FD открытых?
Или, если это
демон называется, скажем, daemonx, только написать программу, которая закрывает все FD и затем EXEC () 'S daemonx. Позвоните своему программа pre_daemonx. Попросите вашего кв сервер вызова pre_daemonx.
Является ли название "daemonx" жестких кодом в unchangable ок-сервера? Нет проблем. Переименовать "daemonx" до "real.daemonx" и вызова программы "daemonx".
Какой путь вы здесь, фиксируя это должно быть на 10 минуте проблемы.