pread.c
来自「KPIT GNU Tools is a set of GNU developme」· C语言 代码 · 共 92 行
C
92 行
/*FUNCTION<<pread>>---read a file from specified positionINDEX preadINDEX _pread_rANSI_SYNOPSIS #include <unistd.h> ssize_t pread(int <[fd]>, void *<[buf]>, size_t <[n]>, off_t <[off]>); ssize_t _pread_r(struct _reent *<[rptr]>, int <[fd]>, void *<[buf]>, size_t <[n]>, off_t <[off]>);TRAD_SYNOPSIS #include <unistd.h> ssize_t pread(<[fd]>, <[buf]>, <[n]>, <[off]>) int <[fd]>; void *<[buf]>; size_t <[n]>; off_t <[off]>; ssize_t _pread_r(<[rptr]>, <[fd]>, <[buf]>, <[n]>, <[off]>) struct _reent *<[rptr]>; int <[fd]>; void *<[buf]>; size_t <[n]>; off_t <[off]>;DESCRIPTIONThe <<pread>> function is similar to <<read>>. One difference is that<<pread>> has an additional parameter <[off]> which is the offset toposition in the file before reading. The function also differs in thatthe file position is unchanged by the function (i.e. the file positionis the same before and after a call to <<pread>>).The <<_pread_r>> function is the same as <<pread>>, only a reentrantstruct pointer <[rptr]> is provided to preserve reentrancy.RETURNS<<pread>> returns the number of bytes read or <<-1>> if failure occurred.PORTABILITY<<pread>> is non-ANSI and is specified by the Single Unix Specification.Supporting OS subroutine required: <<read>>, <<lseek>>.*/#include <_ansi.h>#include <unistd.h>#include <reent.h>ssize_t_DEFUN (_pread_r, (rptr, fd, buf, n, off), struct _reent *rptr _AND int fd _AND _PTR buf _AND size_t n _AND off_t off){ off_t cur_pos; _READ_WRITE_RETURN_TYPE num_read; if ((cur_pos = _lseek_r (rptr, fd, 0, SEEK_CUR)) == (off_t)-1) return -1; if (_lseek_r (rptr, fd, off, SEEK_SET) == (off_t)-1) return -1; num_read = _read_r (rptr, fd, buf, n); if (_lseek_r (rptr, fd, cur_pos, SEEK_SET) == (off_t)-1) return -1; return (ssize_t)num_read;}#ifndef _REENT_ONLYssize_t_DEFUN (pread, (fd, buf, n, off), int fd _AND _PTR buf _AND size_t n _AND off_t off){ return _pread_r (_REENT, fd, buf, n, off);}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?