.\" -*- coding: UTF-8 -*- .\" Copyright 1993, Rickard E. Faith .\" Copyright 2005-2007, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" .\" Other portions are from the 6.9 (Berkeley) 3/10/91 man page: .\" .\" Copyright 1983, The Regents of the University of California. .\" .\" SPDX-License-Identifier: BSD-4-Clause-UC .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH bind 2 "8 lutego 2026 r." "Linux man\-pages 6.18" .SH NAZWA bind \- przywiązuje nazwę do gniazda .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP,\ \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .P \fBint bind(int \fP\fIsockfd\fP\fB, const struct sockaddr *\fP\fIaddr\fP\fB,\fP \fB socklen_t \fP\fIaddrlen\fP\fB);\fP .fi .SH OPIS Gdy tworzone jest gniazdo za pomocą \fBsocket\fP(2), istnieje ono w przestrzeni nazw (rodzinie adresów), lecz nie ma przypisanego adresu. \fBbind\fP() przypisuje adres określony w \fIaddr\fP do gniazda odnoszącego się do deskryptora pliku \fIsockfd\fP. \fIaddrlen\fP określa rozmiar, w bajtach, struktury adresowej na którą wskazuje \fIaddr\fP. Tradycyjnie operacja ta była nazywana "przypisaniem nazwy do gniazda". .P Normalnie, zanim gniazdo \fBSOCK_STREAM\fP będzie mogło odbierać połączenia (zobacz \fBaccept\fP(2)), niezbędne jest przypisanie mu lokalnego adresu za pomocą \fBbind\fP(). .P 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 systemowego w sekcji 7. Dla \fBAF_INET\fP zobacz \fBip\fP(7), dla \fBAF_INET6\fP zobacz \fBipc6\fP(7), dla \fBAF_UNIX\fP zobacz \fBunix\fP(7), dla \fBAF_APPLETALK\fP zobacz \fBddp\fP(7), dla \fBAF_PACKET\fP zobacz \fBpacket\fP(7), dla \fBAF_X25\fP zobacz \fBx25\fP(7), a dla \fBAF_NETLINK\fP zobacz \fBnetlink\fP(7). .P Faktyczna struktura przekazywana jako argument \fIaddr\fP będzie zależała od rodziny adresowej. Struktura \fIsockaddr\fP jest zdefiniowana podobnie do: .P .in +4n .EX struct sockaddr { sa_family_t sa_family; char sa_data[14]; } .EE .in .P Jedyną funkcją tej struktury jest rzutowanie wskaźnika struktury przekazanego w \fIaddr\fP, aby uniknąć ostrzeżeń kompilatora. Zob. PRZYKŁADY poniżej. .SH "WARTOŚĆ ZWRACANA" Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest \-1 i ustawiane \fIerrno\fP, wskazując błąd. .SH BŁĘDY .TP \fBEACCES\fP .\" e.g., privileged port in AF_INET domain Adres jest chroniony, a użytkownik nie jest superużytkownikiem. .TP \fBEADDRINUSE\fP Podany adres już jest wykorzystywany. .TP \fBEADDRINUSE\fP (gniazda domeny Internet) Podano zero jako numer portu w strukturze adresu gniazda, lecz przy próbie skojarzenia z portem dynamicznym (efemerycznym), okazało się, że wszystkie numery portów w zakresie portów dynamicznych są aktualnie używane. Więcej informacji w opisie pliku \fI/proc/sys/net/ipv4/ip_local_port_range\fP w podręczniku \fBip\fP(7). .TP \fBEBADF\fP \fIsockfd\fP nie jest prawidłowym deskryptorem pliku. .TP \fBEINVAL\fP .\" This may change in the future: see .\" .I linux/unix/sock.c for details. Gniazdo jest już skojarzone z adresem. .TP \fBEINVAL\fP \fIaddrlen\fP jest nieprawidłowe lub \fIaddr\fP nie jest prawidłowym adresem dla tej domeny gniazda. .TP \fBENOTSOCK\fP Deskryptor pliku \fIsockfd\fP nie odnosi się do gniazda. .TP \fBEADDRNOTAVAIL\fP Zażądano nieistniejącego interfejsu lub żądany adres nie jest adresem lokalnym. .P Następujące błędy odnoszą się do gniazd domeny UNIX\-owej (\fBAF_UNIX\fP): .TP \fBEACCES\fP Brak praw do przeszukiwania dla składowej ścieżki (zob. także \fBpath_resolution\fP(7)). .TP \fBEFAULT\fP \fIaddr\fP wskazuje poza dostępną dla użytkownika przestrzeń adresową. .TP \fBELOOP\fP Podczas rozwiązywania \fIaddr\fP napotkano zbyt wiele dowiązań symbolicznych. .TP \fBENAMETOOLONG\fP \fIaddr\fP jest zbyt długie. .TP \fBENOENT\fP Fragment ścieżki gniazda odnoszący się do któregoś z katalogów nie istnieje. .TP \fBENOMEM\fP Brak pamięci jądra. .TP \fBENOTDIR\fP Składowa ścieżki nie jest katalogiem. .TP \fBEROFS\fP I\-węzeł gniazda rezyduje na systemie plików przeznaczonym tylko do odczytu. .P Inne błędy mogą być generowane przez podrzędne moduły protokołów. .SH WERSJE Przenośne programy muszą się upewnić, że \fIaddr.sun_path\fP jest łańcuchem zakończonym nullem przeznaczonym do gniazd \fBAF_UNIX\fP. .SH STANDARDY POSIX.1\-2024. .SH HISTORIA .\" SVr4 documents an additional .\" .B ENOSR .\" general error condition, and .\" additional .\" .B EIO .\" and .\" .B EISDIR .\" UNIX-domain error conditions. POSIX.1\-2001, SVr4, 4.2BSD. .SH USTERKI .\" FIXME Document transparent proxy options Nie opisano opcji przezroczystych proxy. .SH PRZYKŁADY Przykładowy program używający \fBbind\fP() z gniazdami domeny Internet można znaleźć w \fBgetaddrinfo\fP(3). .P .\" listen.7 refers to this example. .\" accept.7 refers to this example. .\" unix.7 refers to this example. Następujący przykład pokazuje sposób na skojarzenie gniazda strumieniowego w domenie uniksowej (\fBAF_UNIX\fP) i akceptować połączenia: .P .\" SRC BEGIN (bind.c) .EX #include #include #include #include #include #include \& #define MY_SOCK_PATH "/jakaśścieżka" #define LISTEN_BACKLOG 50 \& int main(void) { int sfd, cfd; socklen_t peer_addr_size; struct sockaddr_un my_addr, peer_addr; \& sfd = socket(AF_UNIX, SOCK_STREAM, 0); if (sfd == \-1) err(EXIT_FAILURE, "socket"); \& memset(&my_addr, 0, sizeof(my_addr)); my_addr.sun_family = AF_UNIX; strncpy(my_addr.sun_path, MY_SOCK_PATH, sizeof(my_addr.sun_path) \- 1); \& if (bind(sfd, (struct sockaddr *) &my_addr, sizeof(my_addr)) == \-1) err(EXIT_FAILURE, "bind"); \& if (listen(sfd, LISTEN_BACKLOG) == \-1) err(EXIT_FAILURE, "listen"); \& /* Teraz możemy akceptować nadchodzące połączenia, po jednym naraz, za pomocą accept(2). */ \& peer_addr_size = sizeof(peer_addr); cfd = accept(sfd, (struct sockaddr *) &peer_addr, &peer_addr_size); if (cfd == \-1) err(EXIT_FAILURE, "accept"); \& /* Kod do obsługi nadchodzących połączeń... */ \& if (close(sfd) == \-1) err(EXIT_FAILURE, "close"); \& if (unlink(MY_SOCK_PATH) == \-1) err(EXIT_FAILURE, "unlink"); } .EE .\" SRC END .SH "ZOBACZ TAKŻE" \fBaccept\fP(2), \fBconnect\fP(2), \fBgetsockname\fP(2), \fBlisten\fP(2), \fBsocket\fP(2), \fBgetaddrinfo\fP(3), \fBgetifaddrs\fP(3), \fBip\fP(7), \fBipv6\fP(7), \fBpath_resolution\fP(7), \fBsocket\fP(7), \fBunix\fP(7) .PP .SH TŁUMACZENIE Tłumaczenie niniejszej strony podręcznika: Przemek Borys , Andrzej Krzysztofowicz i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .