logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

This manual page is part of the POSIX Programmer's Manual. The Linux implementation of this interface

Application Usage

       None.

Description

       The readv() function shall be equivalent to read(), except as described below. The readv() function shall
       place  the  input data into the iovcnt buffers specified by the members of the iov array: iov[0], iov[1],
       ..., iov[iovcnt-1].  The iovcnt argument is valid if greater than 0 and less than or equal to {IOV_MAX}.

       Each iovec entry specifies the base address and length of an area in memory where data should be  placed.
       The readv() function shall always fill an area completely before proceeding to the next.

       Upon successful completion, readv() shall mark for update the last data access timestamp of the file.

Errors

       Refer to read().

       In addition, the readv() function shall fail if:

       EINVAL The sum of the iov_len values in the iov array overflowed an ssize_t.

       The readv() function may fail if:

       EINVAL The iovcnt argument was less than or equal to 0, or greater than {IOV_MAX}.

       Thefollowingsectionsareinformative.

Examples

ReadingDataintoanArray
       The  following  example  reads data from the file associated with the file descriptor fd into the buffers
       specified by members of the iov array.

           #include <sys/types.h>
           #include <sys/uio.h>
           #include <unistd.h>
           ...
           ssize_t bytes_read;
           int fd;
           char buf0[20];
           char buf1[30];
           char buf2[40];
           int iovcnt;
           struct iovec iov[3];

           iov[0].iov_base = buf0;
           iov[0].iov_len = sizeof(buf0);
           iov[1].iov_base = buf1;
           iov[1].iov_len = sizeof(buf1);
           iov[2].iov_base = buf2;
           iov[2].iov_len = sizeof(buf2);
           ...
           iovcnt = sizeof(iov) / sizeof(struct iovec);

           bytes_read = readv(fd, iov, iovcnt);
           ...

Future Directions

       None.

Name

       readv — read a vector

Prolog

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of this interface
       may differ (consult the corresponding Linux manual page for details of Linux behavior), or the  interface
       may not be implemented on Linux.

Rationale

       Refer to read().

Return Value

       Refer to read().

See Also

read(), writev()

       The Base Definitions volume of POSIX.1‐2017, <sys_uio.h>

Synopsis

       #include <sys/uio.h>

       ssize_t readv(int fildes, const struct iovec *iov, int iovcnt);

See Also