Используется следующий в настоящее время неоткрытый дескриптор файла, такой же, как open()
и другие системные вызовы, которые возвращают дескрипторы файлов;dup2()
является исключением из шаблона. (дескриптор файла может быть не открытым, но все еще может быть недоступен для повторного использования, если он, например, был частью сетевого подключения, которое еще не было полностью очищено.) ( Обновление : вычеркнутый текст восстанавливает исходную версию ответа. Если дескриптор файла закрыт, он доступен для повторного использования. Могут возникнуть проблемы с повторным использованием адреса сокета из-за состояний FIN-WAIT в TCP / IP - но адрес сокета не являетсядескриптор файла.)
Если у вас открыты дескрипторы 1-5, затем закройте 4, следующая операция, подобная открытию, вернет 4.
Могут существовать системы безопасности, в которых это не так.шаблон, но вряд ли.Одна из причин заключается в том, что существует правильный код для обработки перенаправления ввода / вывода, который основан на закрытии стандартного ввода (дескриптор файла 0) и следующей операции, подобной открытию, повторно использующей дескриптор файла;повторить для стандартного вывода (дескриптор файла 1).