getpeereid()

Получите эффективные учетные данные пира UNIX-домена

Прототип:

#include <sys/types.h>
#include <unistd.h>
int getpeereid( int s,
uid_t *euid,
gid_t *egid );

Аргументы:

s
Сокет домена UNIX (см. протокол UNIX) типа SOCK_STREAM для которого вы либо вызвали функцию connect(), либо одну из возвращенных из accept() после вызова bind() и listen().
euid
NULL, или указатель на область памяти, где функция может хранить эффективный идентификатор пользователя.
egid
NULL, или указатель на область памяти, где функция может хранить эффективный идентификатор группы.

Библиотека:

libc

Описание:

Функция getpeereid() получает эффективные идентификаторы группы и пользователя пира, присоединенного к сокету домена UNIX. Если euid и egid не равны NULL, функция хранит идентификаторы в областях памяти, на которые они указывают.

При получении сокета в результате вызова connect(), учетные данные принадлежат пиру на момент вызова bind(). Если сокет был возвращен функцией accept(), учетные данные принадлежат пиру на момент вызова connect(). Этот механизм надежен; ни одна из сторон не может повлиять на учетные данные, возвращаемые своему пиру, кроме как путем вызова соответствующего системного вызова (т.е., либо connect() либо bind()) под разными действующими полномочиями.

Серверы и клиенты домена UNIX обычно используют эту функцию для проверки учетных данных друг друга.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EBADF
Невалидный дескриптор s.
ENOTSOCK
Аргумент s является файлом, а не сокетом.
ENOTCONN
Аргумент s не относится к сокету, для которого была вызвана connect(), или не является одним из тех, что вернула функция listen().
EINVAL
Аргумент s не относится к сокету типа SOCK_STREAM, или система вернула недопустимые данные.

Классификация:

NetBSD

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

accept(), bind(), connect(), listen(), UNIX




Предыдущий раздел: Описание API системной библиотеки