Книга: UNIX: взаимодействие процессов

15.5. Функция door_cred

15.5. Функция door_cred

Интерфейс дверей предусматривает полезную возможность получения информации о клиенте при каждом вызове. Это осуществляется функцией door_cred:

#include <door.h>
int door_cred(door_cred_t *cred);
/* Возвращает 0 в случае успешного завершения, –1 – в случае ошибки */

Структура, на которую указывает аргумент cred, имеет тип door_cred_t, определяемый как

typedef struct door_cred {
 uid_t dc_euid; /* действующий идентификатор пользователя клиента */
 gid_t dc_egid; /* действующий идентификатор группы клиента */
 uid_t dc_ruid; /* реальный идентификатор пользователя клиента */
 gid_t dc_rgid; /* реальный идентификатор группы клиента */
 pid_t dc_pid; /* идентификатор процесса клиента */
} door_cred_t;

В эту структуру помещается информация о клиенте при возвращении из вызова door_cred. В разделе 4.4 [21] подробно рассказывается о различиях между действующими и реальными идентификаторами пользователя и группы, а пример использования этой функции приведен в листинге. 15.5.

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

Оглавление книги


Генерация: 1.659. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз