bind(2) System Calls Manual bind(2)
Name
bind - bind a name to a socket
Syntax
#include <sys/types.h>
#include <sys/socket.h>
bind(s, name, namelen)
int s;
struct sockaddr *name;
int namelen;
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
bind(s, name, namelen)
int s;
struct sockaddr_un *name;
int namelen;
Description
The system call assigns a name to an unnamed socket. When a socket is created with the call, it exists in a name space (address family)
but has no name assigned. The system call 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 system call.
The sockaddr argument specifies a general address family. The sockaddr_un argument specifies an address family in the UNIX domain.
The rules used in name binding vary between communication domains. Consult the reference pages in the ULTRIX Reference Pages Section 4:
Special Files for detailed information.
Return Value
If the is successful, the call returns a 0 value. A return value of -1 indicates an error, which is further specified in the global vari-
able errno.
Diagnostics
The call fails under the following conditions:
[EBADF] S is an invalid 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.
[EACCESS] 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 exceeds 255 characters, or an entire pathname exceeds 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), getsockname(2), listen(2), socket(2), unlink(2)
bind(2)