2013-09-17 2 views
1

когда япроцесс, который не имеет дескриптор файла

ls proc/[pid]/fd 

иногда я не получаю выход, кажется, что нет ни одного файла дескриптора в этом файле.

Что это значит, когда процесс не имеет файлового дескриптора?

+1

'/ proc/[pid]/fd' - это ** каталог **, а не файл. – devnull

+2

Это означает, что процесс не имеет открытых файлов. Я предполагаю (не проверял исходный код), что 'cron' закроет свои fds, прежде чем переходить в режим ожидания. –

+0

@larsmans тогда почему/когда процесс не нужен stdin, stdout и stderr? спасибо за ваш ответ –

ответ

2

Рассматриваемый процесс является скорее deamon - демон будет обработан intentionally close standard file descriptors, чтобы avoid hanging onto their resources. (Они будут также chdir в корневой каталог, вызвать дополнительный fork() и выполнить ряд более неясными операций по той же причине).

+0

У многих демонов все еще есть некоторые FD, открытые, однако, в локальные сокеты, журналы и т. Д. –

+2

@larsmans Согласовано - на самом деле, большинство из них это делают. Но, учитывая программу без открытых файлов, я бы предположил, что это какой-то демон. – user4815162342

+0

Спасибо за ваш ответ! Извините, я не могу +1, потому что я здесь новый. –

Смежные вопросы