bind();
assigns a name to an unnamed socket.
When a socket is created with
socket(2)
it exists in a name space (address family) but has no name assigned.
bind();
requests that
name
be assigned to the socket.
namelen
indicates the amount of space pointed to by
name,
in bytes.
NOTES
Binding a name in the UNIX domain creates a socket in the file
system that must be deleted by the caller when it is no longer
needed (using
unlink(2/)).
The rules used in name binding vary between communication domains.
Consult the manual entries in section 4 for detailed information.
RETURN VALUES
If the bind is successful, a 0 value is returned.
A return value of \-1 indicates an error, which is
further specified in the global
errno.
ERRORS
The
bind();
call will fail if:
[EBADF]
s
is not a valid descriptor.
[ENOTSOCK]
s
is not a socket.
[EADDRNOTAVAIL]
The specified address is not available from the local machine.
[EADDRINUSE]
The specified address is already in use.
[EINVAL]
The socket is already bound to an address.
[EINVAL]
The family of the socket and that requested in
name->sa_family
are not equivalent.
[EACCES]
The requested address is protected, and the current user
has inadequate permission to access it.
[EFAULT]
The
name
parameter is not in a valid part of the user address space.
The following errors are specific to binding names in the UNIX domain.
[ENOTDIR]
A component of the path prefix is not a directory.
[ENAMETOOLONG]
A component of a pathname exceeded
{NAME_MAX}
characters, or an entire path name exceeded
{PATH_MAX}
characters.
[ENOENT]
A prefix component of the path name does not exist.
[ELOOP]
Too many symbolic links were encountered in translating the pathname.
[EIO]
An I/O error occurred while making the directory entry or allocating the inode.