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