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

FreeBSD Manual Pages

  
 
  

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

NAME
       bind -- assign a	local protocol address to a socket

LIBRARY
       Standard	C Library (libc, -lc)

SYNOPSIS
       #include	<sys/socket.h>

       int
       bind(int	s, const struct	sockaddr *addr,	socklen_t addrlen);

DESCRIPTION
       The  bind() system call assigns the local protocol address to a socket.
       When a socket is	created	with socket(2) it exists in an address	family
       space but has no	protocol address assigned.  The	bind() system call re-
       quests that addr	be assigned to the socket.

NOTES
       Binding an address in the UNIX domain creates a socket in the file sys-
       tem that	must be	deleted	by the caller when it is no longer needed (us-
       ing unlink(2)).

       The  rules  used	in address binding vary	between	communication domains.
       Consult the manual entries in section 4 for detailed information.

       For maximum portability,	you should  always  zero  the  socket  address
       structure before	populating it and passing it to	bind().

RETURN VALUES
       The  bind()  function  returns the value	0 if successful; otherwise the
       value -1	is returned and	the global variable errno is set  to  indicate
       the error.

ERRORS
       The bind() system call will fail	if:

       [EAGAIN]		  Kernel  resources  to	 complete the request are tem-
			  porarily unavailable.

       [EBADF]		  The s	argument is not	a valid	descriptor.

       [EINVAL]		  The socket is	already	bound to an address,  and  the
			  protocol  does not support binding to	a new address;
			  or the socket	has been shut down.

       [EINVAL]		  The addrlen argument is not a	valid length  for  the
			  address family.

       [ENOTSOCK]	  The s	argument is not	a socket.

       [EADDRNOTAVAIL]	  The  specified address is not	available from the lo-
			  cal machine.

       [EADDRINUSE]	  The specified	address	is already in use.

       [EAFNOSUPPORT]	  Addresses in the specified address family cannot  be
			  used with this socket.

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

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

       The following errors are	specific to binding addresses in the UNIX  do-
       main.

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

       [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.

       [EINTEGRITY]
		    Corrupted data was detected	while reading  from  the  file
		    system.

       [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)

HISTORY
       The bind() system call appeared in 4.2BSD.

FreeBSD	13.2			March 30, 2020			       BIND(2)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=bind&sektion=2&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help