You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.2 KiB
53 lines
1.2 KiB
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <fcntl.h>
|
|
#include <sys/uio.h>
|
|
char head[1024],foo[48], bar[51], baz[49];
|
|
struct iovec iov[3];
|
|
int main ()
|
|
{
|
|
|
|
|
|
ssize_t nr;
|
|
int fd, i;
|
|
|
|
fd = open ("hello.sh", O_RDONLY);
|
|
if (fd==-1){
|
|
perror ("open");
|
|
return 1;
|
|
}
|
|
nr=read(fd, head, sizeof(head));
|
|
if(nr==-1) {
|
|
perror("read");
|
|
return 2;
|
|
}
|
|
|
|
printf ("read size %d, head: %s\n", nr, (char *) head);
|
|
|
|
/* set up our iovec structures */
|
|
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 */
|
|
nr = readv (fd, iov, 3);
|
|
if (nr==-1) {
|
|
perror ("readv");
|
|
return 1;
|
|
}
|
|
|
|
for (i = 0; i < 3; i++)
|
|
printf ("IOV%d: size:%d %s\n", i, nr, (char *) iov[i].iov_base);
|
|
|
|
if (close (fd)) {
|
|
perror ("close");
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|