readv.c
来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 50 行
C
50 行
#include <u.h>#include <libc.h>staticlongioreadv(int fd, IOchunk *io, int nio, vlong offset){ int i; long m, n, tot; char *buf, *p; tot = 0; for(i=0; i<nio; i++) tot += io[i].len; buf = malloc(tot); if(buf == nil) return -1; tot = pread(fd, buf, tot, offset); p = buf; n = tot; for(i=0; i<nio; i++){ if(n <= 0) break; m = io->len; if(m > n) m = n; memmove(io->addr, p, m); n -= m; p += m; io++; } free(buf); return tot;}longreadv(int fd, IOchunk *io, int nio){ return ioreadv(fd, io, nio, -1LL);}longpreadv(int fd, IOchunk *io, int nio, vlong off){ return ioreadv(fd, io, nio, off);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?