mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-08 18:19:08 +08:00
42 lines
932 B
C
42 lines
932 B
C
/* Adapted from https://www.oreilly.com/library/view/linux-system-programming/0596009585/ch04.html */
|
|
|
|
#include "scatter_gather.h"
|
|
|
|
int main ()
|
|
{
|
|
char foo[48], bar[51], baz[49];
|
|
struct iovec iov[3];
|
|
ssize_t nr;
|
|
int sfd, cfd;
|
|
|
|
if (remove (SV_SOCK_PATH) < 0 && errno != ENOENT)
|
|
errExit ("remove");
|
|
|
|
if ((sfd = unixBind (SV_SOCK_PATH, SOCK_STREAM)) < 0)
|
|
errExit ("unixBind");
|
|
|
|
if (listen (sfd, BACKLOG) < 0)
|
|
errExit ("listen");
|
|
|
|
cfd = accept (sfd, NULL, NULL);
|
|
if (cfd < 0)
|
|
errExit ("accept");
|
|
|
|
iov[0].iov_base = foo;
|
|
iov[0].iov_len = sizeof (foo);
|
|
iov[1].iov_base = bar;
|
|
iov[1].iov_len = sizeof (bar);
|
|
iov[2].iov_base = baz;
|
|
iov[2].iov_len = sizeof (baz);
|
|
|
|
nr = readv (cfd, iov, 3);
|
|
if (nr < 0)
|
|
errExit ("readv");
|
|
printf ("read %zd bytes\n", nr);
|
|
for (int i = 0; i < 3; i++)
|
|
printf ("%d: %s", i, (char *) iov[i].iov_base);
|
|
|
|
if (close (cfd) < 0)
|
|
errExit ("close");
|
|
}
|