Provided by: manpages-ru_0.98-4_all bug

НАЗВАНИЕ

       bind - привязать имя к сокету

ОБЗОР

       #include <sys/types.h>
       #include <sys/socket.h>

       int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);

ОПИСАНИЕ

       bind привязывает к сокету sockfd локальный адрес my_addr длиной addrlen.  Традиционно, эта
       операция называется “присваивание сокету имени.”  Когда сокет только что создан с  помощью
       socket(2), он существует в пространстве имён (семействе адресов), но не имеет назначенного
       имени.

       Обычно сокету типа SOCK_STREAM требуется назначить локальный адрес с помощью  bind,  перед
       тем, как он сможет принимать соединения (см.  accept(2)).

       Правила,  используемые при привязке имён, разные в разных семействах адресов.   Обратитесь
       к соответствующему руководству в секции 7 за дальнейшей информацией.  Для  AF_INET  смотри
       ip(7),  для  AF_UNIX  смотри unix(7), для AF_APPLETALK смотри ddp(7), для AF_PACKET смотри
       packet(7), для AF_X25 смотри x25(7), а для AF_NETLINK смотри netlink(7).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       В случае успеха возвращается ноль.  При ошибке возвращается -1,  а  errno  устанавливается
       должным образом.

ОШИБКИ

       EBADF   sockfd не является правильным дескриптором.

       EINVAL  Сокет  уже привязан к какому-то адресу.  Эта ошибка в будущем может не выдаваться,
               смотри linux/unix/sock.c, где описаны детали.

       EACCES  Адрес защищен, или пользователь не является суперпользователем.

       ENOTSOCK
               Аргумент системного вызова является дескриптором файла, а не сокета.

       Нижеследующие ошибки специфичны для сокетов домена UNIX (AF_UNIX):

       EINVAL  Параметр addrlen неверен, или сокет не был найден в семействе адресов AF_UNIX.

       EROFS   Попытка создания inode сокета на файловой системе "только для чтения".

       EFAULT  my_addr указывает за пределы доступного адресного пространства.

       ENAMETOOLONG
               my_addr слишком длинно.

       ENOENT  Файл не существует.

       ENOMEM  Ядру не хватило памяти.

       ENOTDIR

               Компонент  пути,  использованный  как  каталог,  в  действительности  таковым   не
               является.

       EACCES  Не разрешен поиск в одном из компонентов пути.

       ELOOP   my_addr  является  зацикленной  символической  ссылкой,  то  есть  при подстановке
               возникает ссылка на неё саму.

ОШИБКИ

       Не описываются ключи, связанные с работой прозрачных прокси.

СООТВЕТСТВИЕ СТАНДАРТАМ

       SVr4,  4.4BSD  (функция  bind  впервые  появилась  в   BSD   4.2).    SVr4   документирует
       дополнительные  коды  ошибок  EADDRNOTAVAIL,  EADDRINUSE,  и  ENOSR, и дополнительные коды
       ошибок домена Unix: EIO и EISDIR

ЗАМЕЧАНИЕ

       Третий аргумент вызова bind в действительности имеет тип int (это именно так  в  BSD  4.*,
       libc4  и  libc5).   При  разработке  стандарта  POSIX случилось некоторое недопонимание, и
       появился тип socklen_t.  Смотри также accept(2).

СМОТРИ ТАКЖЕ

       accept(2), connect(2), listen(2), socket(2), getsockname(2), ip(7), socket(7)

ПЕРЕВОД

       Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 1999