BIND(2)

NAZWA
bind - przywiązanie nazwy do gniazda

SKŁADNIA
#include <sys/types.h>
#include <sys/socket.h>

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

OPIS
Uwaga! To tłumaczenie może być nieaktualne!

bind nadaje gniazdu, sockfd, lokalny adres my_addr. my_addr ma długość addrlen bajtów. Tradycyjnie nazywa się to "przyznaniem gniazdu nazwy". Gdy gniazdo jest utworzone za pomocą polecenia socket(2), istnieje ono w przestrzeni nazw (rodzina adresów), ale nie ma przyznanej żadnej nazwy.

Normalnie, zanim gniazdo SOCKET_STREAM będzie mogło odbierać połączenia (zobacz accept(2)), niezbędne jest przypisanie mu lokalnego adresu za pomocą bind. Reguły dotyczące przywiązywania nazw są różne w różnych rodzinach adresów. Szczegółowe informacje znajdują się na stronach podręcznika man w sekcji 7. Dla AF_INET zobacz ip(7), dla AF_UNIX zobacz unix(7), dla AF_APPLETALK zobacz ddp(7), dla AF_PACKET zobacz packet(7), dla AF_X25 zobacz x25(7), a dla AF_NETLINK zobacz netlink(7).

WARTOŚĆ ZWRACANA
Po pomyślnym zakończeniu, zwracane jest zero. W przeciwnym wypadku zwracane jest -1 i odpowiednio ustawiane errno .

BŁĘDY

EBADF
    sockfd nie jest prawidłowym deskryptorem.

EINVAL
    Gniazdo już jest przywiązane do adresu. Może to się zmienić w przyszłości: szczegóły można znaleźć w linux/unix/sock.c.

EACCES
    Adres jest chroniony, a użytkownik nie jest superużytkownikiem.

ENOTSOCK
    Argument jest deskryptorem pliku, a nie gniazda.

Następujące błędy odnoszą się do gniazd domeny UNIX-owej (AF_UNIX):

EINVAL
    Parametr addrlen jest nieprawidłowy, lub gniazdo nie należy do rodziny AF_UNIX.

EROFS
    I-węzeł gniazda rezyduje na systemie plików przeznaczonym tylko do odczytu.

EFAULT
    my_addr wskazuje poza dostępną dla użytkownika przestrzeń adresową.

ENAMETOOLONG
    my_addr jest zbyt długie.

ENOENT
    Plik nie istnieje.

ENOMEM
    Brak pamięci kernela.

ENOTDIR
    Element składowy ścieżki nie jest katalogiem.

EACCES
    Brak praw do przeszukiwania dla składnika ścieżki.

ELOOP
    Podczas rozwiązywania my_addr napotkano zbyt wiele dowiązań symbolicznych.

USTERKI
Nie opisano opcji przezroczystych proxy.

ZGODNE Z
SVr4, 4.4BSD (funkcja bind pojawiła się najpierw w BSD 4.2). SVr4 dokumentuje dodatkowe ogólne błędy, EADDRNOTAVAIL, EADDRINUSE i ENOSR oraz dodatkowe błędy domeny UNIX-owej, EIO i EISDIR.

UWAGA
Trzeci argument bind jest w rzeczywistości typu int (i tak jest w BSD 4.*, libc4 i libc5). Pewne zamieszanie w POSIX doprowadziło jego zmiany na obecny socklen_t. Zobacz także accept(2).

ZOBACZ TAKŻE
accept(2), connect(2), listen(2), socket(2), getsockname(2), ip(7), socket(7)

INFORMACJE O TŁUMACZENIU
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:

    man --locale=C 2 bind

Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.