Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
BIND(2)			  FreeBSD System Calls Manual		       BIND(2)

NAME
     bind -- bind a name to a socket

SYNOPSIS
     #include <sys/socket.h>

     int
     bind(int s, const struct sockaddr *name, socklen_t	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.  namelen
     indicates the amount of space pointed to by name, in bytes; the sa_len
     member of name is ignored.

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

RETURN VALUES
     Upon successful completion, the value 0 is	returned; otherwise the
     value -1 is returned and the global variable errno	is set to indicate the
     error.

ERRORS
     The bind()	function 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, or namelen
			is not a valid length for the supplied address.

     [EAFNOSUPPORT]	The family of the socket and that requested in
			name-_sa_family	are not	equivalent.

     [ENOBUFS]		Insufficient buffer space is available.

     [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
			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 exceeded NAME_MAX charac-
			ters, or an entire pathname (including the terminating
			NUL) exceeded PATH_MAX bytes.

     [ENOENT]		A prefix component of the pathname does	not exist.

     [ELOOP]		Too many symbolic links	were encountered in translat-
			ing 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]		An empty pathname was specified.

SEE ALSO
     connect(2), getsockname(2), listen(2), socket(2)

STANDARDS
     The bind()	function conforms to IEEE Std 1003.1-2008 ("POSIX.1").

HISTORY
     The bind()	system call first appeared in 4.1cBSD.

FreeBSD	13.0			January	3, 2021			  FreeBSD 13.0

NAME | SYNOPSIS | DESCRIPTION | NOTES | RETURN VALUES | ERRORS | SEE ALSO | STANDARDS | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=bind&sektion=2&manpath=OpenBSD+6.9>

home | help