August 18, 2002 SOCKETPAIR 2

### NAME

socketpair - create a pair of connected sockets

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```int` socketpair(```int d``, int type``, int protocol``, int *sv`)

### DESCRIPTION

The socketpair(``) call creates an unnamed pair of connected sockets in the specified domain ```d`, of the specified ```type`, and using the optionally specified ```protocol`. The descriptors used in referencing the new sockets are returned in ```sv`[0] and ```sv`[1]. The two sockets are indistinguishable.

### RETURN VALUES

A 0 is returned if the call succeeds, -1 if it fails.

### ERRORS

The call succeeds unless:

[```EMFILE`]
  Too many descriptors are in use by this process.

[```ENFILE`]
  The system file table is full.

[```EAFNOSUPPORT`]
  The specified address family is not supported on this machine.

[```EPROTONOSUPPORT`]
  The specified protocol is not supported on this machine.

[```EOPNOTSUPP`]
  The specified protocol does not support creation of socket pairs.

[```EFAULT`]
  The address ```sv` does not specify a valid part of the process address space.

### SEE ALSO

pipe(2), read(2), write(2)

### HISTORY

The socketpair(``) function call appeared in 4.2BSD.

### BUGS

This call is currently implemented only for the LOCAL domain. Many operating systems only accept a protocol of ```PF_UNSPEC`, so that should be used instead of ```PF_LOCAL` for maximal portability.