iOS Developer Library Developer
ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages


This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

For more information about the manual page format, see the manual page for manpages(5).

BIND(2)                     BSD System Calls Manual                    BIND(2)

     bind -- bind a name to a socket

     #include <sys/socket.h>

     bind(int socket, const struct sockaddr *address, socklen_t address_len);

     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 address 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 Consult
     sult the manual entries in section 4 for detailed information.

     Upon successful completion, a value of 0 is returned.  Otherwise, a value
     of -1 is returned and the global integer variable errno is set to indi-cate indicate
     cate the error.

     The bind() system call will fail if:

     [EACCES]           The requested address is protected, and the current
                        user has inadequate permission to access it.

     [EADDRINUSE]       The specified address is already in use.

     [EADDRNOTAVAIL]    The specified address is not available from the local

     [EAFNOSUPPORT]     address is not valid for the address family of socket.

     [EBADF]            socket is not a valid file descriptor.

     [EDESTADDRREQ]     socket is a null pointer.

     [EFAULT]           The address parameter is not in a valid part of the
                        user address space.

     [EINVAL]           socket is already bound to an address and the protocol
                        does not support binding to a new address.  Alterna-tively, Alternatively,
                        tively, socket may have been shut down.

     [ENOTSOCK]         socket does not refer to a socket.

     [EOPNOTSUPP]       socket is not of a type that can be bound to an

     The following errors are specific to binding names in the UNIX domain.

     [EACCES]           A component of the path prefix does not allow search-ing searching
                        ing or the node's parent directory denies write per-mission. permission.

     [EIO]              An I/O error occurred while making the directory entry
                        or allocating the inode.

     [EISDIR]           An empty pathname was specified.

     [ELOOP]            Too many symbolic links were encountered in translat-ing translating
                        ing the pathname.  This is taken to be indicative of a
                        looping symbolic link.

     [ENAMETOOLONG]     A component of a pathname exceeded {NAME_MAX} charac-ters, characters,
                        ters, or an entire path name exceeded {PATH_MAX} char-acters. characters.

     [ENOENT]           A component of the path name does not refer to an
                        existing file.

     [ENOTDIR]          A component of the path prefix is not a directory.

     [EROFS]            The name would reside on a read-only file system.

     #include <sys/types.h>
     #include <sys/socket.h>

     The include file <sys/types.h> is necessary.

     connect(2), getsockname(2), listen(2), socket(2), compat(5)

     The bind() function call appeared in 4.2BSD.

4.2 Berkeley Distribution        June 4, 1993        4.2 Berkeley Distribution