Originální popis anglicky:
bind - bind a name to a socket
Návod, kniha: Linux Programmer's Manual
#include <sys/types.h>
#include <sys/socket.h>
int bind(int sockfd, struct sockaddr *my_addr,
socklen_t addrlen);
bind gives the socket
sockfd the local address
my_addr.
my_addr is
addrlen bytes long. Traditionally, this is called
“assigning a name to a socket.” When a socket is created with
socket(2), it exists in a name space (address family) but has no name
assigned.
It is normally necessary to assign a local address using
bind before a
SOCK_STREAM socket may receive connections (see
accept(2)).
The rules used in name binding vary between address families. Consult the manual
entries in Section 7 for detailed information. For
AF_INET see
ip(7), for
AF_UNIX see
unix(7), for
AF_APPLETALK
see
ddp(7), for
AF_PACKET see
packet(7), for
AF_X25 see
x25(7) and for
AF_NETLINK see
netlink(7).
On success, zero is returned. On error, -1 is returned, and
errno is set
appropriately.
- EACCES
- The address is protected, and the user is not the
super-user.
- EBADF
- sockfd is not a valid descriptor.
- EINVAL
- The socket is already bound to an address. This may change
in the future: see linux/unix/sock.c for details.
- ENOTSOCK
- Argument is a descriptor for a file, not a socket.
The following errors are specific to UNIX domain (
AF_UNIX) sockets:
- EACCES
- Search permission is denied on a component of the path
prefix. (See also path_resolution(2).)
- EFAULT
- my_addr points outside the user's accessible address
space.
- EINVAL
- The addrlen is wrong, or the socket was not in the
AF_UNIX family.
- ELOOP
- Too many symbolic links were encountered in resolving
my_addr.
- ENAMETOOLONG
- my_addr is too long.
- ENOENT
- The file does not exist.
- ENOMEM
- Insufficient kernel memory was available.
- ENOTDIR
- A component of the path prefix is not a directory.
- EROFS
- The socket inode would reside on a read-only file
system.
The transparent proxy options are not described.
SVr4, 4.4BSD (the
bind function first appeared in BSD 4.2). SVr4
documents additional
EADDRNOTAVAIL,
EADDRINUSE, and
ENOSR
general error conditions, and additional
EIO and
EISDIR
Unix-domain error conditions.
The third argument of
bind is in reality an int (and this is what BSD 4.*
and libc4 and libc5 have). Some POSIX confusion resulted in the present
socklen_t, also used by glibc. See also
accept(2).
accept(2),
connect(2),
getsockname(2),
listen(2),
path_resolution(2),
socket(2),
ip(7),
socket(7)