.\" Copyright (c
) 1986 Regents of the University of California
.
.\" All rights reserved
. The Berkeley software License Agreement
.\" specifies the terms
and conditions
for redistribution
.
.\" @
(#)socketpair.c 6.2 (Berkeley) %G%
#define DATA1 "In Xanadu, did Kublai Khan . . ."
#define DATA2 "A stately pleasure dome decree . . ."
* This program creates a pair of connected sockets then forks and
* communicates over them. This is very similar to communication with pipes,
* however, socketpairs are two-way communications objects. Therefore I can
* send messages in both directions.
if (socketpair(AF_UNIX
, SOCK_STREAM
, 0, sockets
) < 0) {
perror("opening stream socket pair");
if ((child
= fork()) == -1)
else if (child
) { /* This is the parent. */
if (read(sockets
[1], buf
, 1024, 0) < 0)
perror("reading stream message");
if (write(sockets
[1], DATA2
, sizeof(DATA2
)) < 0)
perror("writing stream message");
} else { /* This is the child. */
if (write(sockets
[0], DATA1
, sizeof(DATA1
)) < 0)
perror("writing stream message");
if (read(sockets
[0], buf
, 1024, 0) < 0)
perror("reading stream message");