Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

connect(2)

getsockname(2)

listen(2)

socket(2)

unlink(2)

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 bind system call assigns a name to an unnamed socket. When a socket is created with the socket call, it exists in a name space (address family) but has no name assigned. The bind 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 unlink 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 bind is successful, the call returns a 0 value. A return value of −1 indicates an error, which is further specified in the global variable errno. 

Diagnostics

The bind 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)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026