Передача дескрипторов в виде неявных параметров

Дескрипторы остаются открытыми и после вызова функции execve. Для создания нового процесса, который выполняет код из файла F, в родительском процессе вызывается функция fork, а в дочернем процессе предусматривается вызов функции execve с именем файла F в качестве параметра.

Дескрипторы файлов фактически становятся своего рода неявными параметрами, передаваемыми вновь созданным процессам, а также тем процессам которые перекрывают код работающей программы кодом, считанным из файла. В родительском процессе можно выбрать, какие дескрипторы должны остаться открытыми, а какие должны быть закрыты перед вызовом функции fork, а также определить точный перечень дескрипторов, которые останутся открытыми в процессе передачи параметров при вызове функции execve.

В программах Linux для управления обработкой вместо явных параметров часто используются дескрипторы. В частности, в любой программе Linux предусмотрено наличие трех открытых стандартных дескрипторов ввода/вывода с началом ее выполнения: дескрипторов стандартного устройства ввода данных (дескриптор 0), стандартного устройства вывода данных (дескриптор 1) и стандартного устройства вывода сообщений об ошибках (дескриптор 2). Программа читает входные данные из дескриптора 0, пишет выходные данные в дескриптор 1 и передает сообщения об ошибках в дескриптор 2.

Преимущества применения постоянных дескрипторов

В сервере, в котором предусмотрен вызов отдельной программы для обработки каждого конкретного запроса, также можно использовать дескрипторы в качестве неявных параметров. Например, ведомая программа, которая входит в состав сервера с установлением логического соединения, может быть разработана таким образом, чтобы в ней предусматривалось применение дескриптора 0 в качестве устройства ввода данных из соединения TCP. В этом случае в ведущем сервере устанавливается соединение через дескриптор 0, а затем для вызова на выполнение ведомой программы вызывается функция execve. Ведущая программа могла быть также запрограммирована на использование произвольного дескриптора и передачу дочернему процессу параметра с указанием того, какой именно дескриптор соответствует соединению. Однако применение постоянного дескриптора позволяет упростить код без потери функциональных возможностей. Москва - автономная газификация выступает лидером. Автономная газификация - расценки Живите не болея - лечение алкоголизма.

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

Похожие статьи Меню Опрос Фото Популярное
rss