Files
system-programming/chp4/readv.c
2025-07-08 15:33:04 +02:00

49 lines
848 B
C

/*
* SPDX-License-Identifier: MIT
* Copyright (c) 2025 Fabio Scotto di Santolo
*/
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
int main(void)
{
char foo[48], bar[51], baz[49];
int fd = open("buccaneer.txt", O_RDONLY);
if (fd == -1) {
perror("open");
return 1;
}
// setup our iovec structures
struct iovec iov[3];
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);
// read into the structures with a single call
int nr = readv(fd, iov, 3);
if (nr == -1) {
perror("readv");
return 1;
}
for (int i = 0; i < 3; i++)
printf("%d: %s", i, (char *)iov[i].iov_base);
if (close(fd)) {
perror("close");
return 1;
}
return 0;
}