bind

Autres langues

Langue: pl

Version: 1998-10-03 (fedora - 25/11/07)

Section: 2 (Appels système)

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

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)