BIND(2) BSD Programmer's Manual BIND(2)
bind - bind a name to a socket
bind(int s, struct sockaddr *name, int namelen);
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.
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
The rules used in name binding vary between communication domains. Con-
sult the manual entries in section 4 for detailed information.
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.
The bind() call will fail if:
[EBADF] S is not a valid descriptor.
[ENOTSOCK] S is not a socket.
The specified address is not available from the local ma-
The specified address is already in use.
[EINVAL] The socket is already bound to an address.
[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 ad-
The following errors are specific to binding names in the UNIX domain.
[ENOTDIR] A component of the path prefix is not a directory.
[EINVAL] The pathname contains a character with the high-order bit
A component of a pathname exceeded 255 characters, or an en-
tire path name exceeded 1023 characters.
[ENOENT] A prefix component of the path name does not exist.
[ELOOP] Too many symbolic links were encountered in translating the
[EIO] An I/O error occurred while making the directory entry or
allocating the inode.
[EROFS] The name would reside on a read-only file system.
[EISDIR] An empty pathname was specified.
connect(2), listen(2), socket(2), getsockname(2)
The bind function call appeared in 4.2BSD.
4.2 Berkeley Distribution June 4, 1993 2