#include #include #include #include #include #include int main(int argc, char **argv) { int f, ret, i; char buf[BUFSIZ]; struct iovec iv[3]; iv[0].iov_len = 10; iv[0].iov_base = e_malloc(iv[0].iov_len); iv[0].iov_len--; iv[1].iov_len = 2; iv[1].iov_base = e_malloc(iv[1].iov_len); iv[1].iov_len--; iv[2].iov_len = 20; iv[2].iov_base = e_malloc(iv[2].iov_len); iv[2].iov_len--; f = open("test_aio.dat", O_CREAT | O_RDWR | O_TRUNC, 0644); if (f == -1) { perror("open"); return 1; } while (!feof(stdin)) { memset(buf, 0, sizeof buf); fgets(buf, sizeof buf, stdin); printf("io_write=%d\n", (ret = io_write(f, buf, strlen(buf)))); if (ret == -1) { ELIBERR(io); return 2; } } memset(buf, 0, sizeof buf); printf("io_read=%d\n", (ret = io_rread(f, buf, sizeof buf, 0, 0))); if (ret == -1) { ELIBERR(io); return 3; } printf("\n\n%s\n", buf); printf("io_readv=%d\n", (ret = io_rreadv(f, iv, 3, (off_t) 0, 1))); for (i = 0; i < 3; i++) { printf("%d) len=%d - %s\n---\n", i, iv[i].iov_len, iv[i].iov_base); e_free(iv[i].iov_base); } iv[0].iov_base = e_strdup("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"); iv[0].iov_len = strlen(iv[0].iov_base) + 1; iv[1].iov_base = e_strdup("bbbbbbbbbbbbbbbb\n"); iv[1].iov_len = strlen(iv[1].iov_base) + 1; iv[2].iov_base = e_strdup("sdgnsjkfgbfgbfjhbjjjjjjjjjjjjjjjj\n"); iv[2].iov_len = strlen(iv[2].iov_base) + 1; printf("io_writev=%d\n", (ret = io_rwritev(f, iv, 3, 0, 1))); for (i = 0; i < 3; i++) memset(iv[i].iov_base, 0, iv[i].iov_len); printf("io_readv=%d\n", (ret = io_rreadv(f, iv, 3, 0, 1))); for (i = 0; i < 3; i++) { printf("%d) len=%d - %s\n---\n", i, iv[i].iov_len, iv[i].iov_base); e_free(iv[i].iov_base); } close(f); /* for (i = 0; i < 3; i++) e_free(iv[i].iov_base); */ return 0; }