BIND(2) BIND(2)
NAME
bind - bind a name to a socket
SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>
bind(s, name, namelen)
int s;
struct sockaddr *name;
int namelen;
DESCRIPTION
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.
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 VALUE
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.
[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
Page 1 (last mod. 8/20/87)
BIND(2) BIND(2)
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.
[EINVAL] The pathname contains a character with the
high-order bit set.
[ENAMETOOLONG] A component of a pathname exceeded 255
characters, or an entire 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 pathname.
[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] A null pathname was specified.
SEE ALSO
connect(2), listen(2), socket(2)
NOTE
The primitives documented on this manual page are system
calls, but unlike most system calls they are not resolved by
libc. To compile and link a program that makes these calls,
follow the procedures for section (3B) routines as described
in intro(3).
ORIGIN
4.3 BSD
Page 2 (last mod. 8/20/87)