read、write和lseek

1. read函数

1)      函数原型:

#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);

2)      函数功能:

read系统调用从文件描述符fd指向的文件中,读取count个字节到buf中。

3)      参数说明:

fd:文件描述符

buf:保存读入信息的缓存

count:要读取的字节数

返回值:如果read成功,则返回读到的字节数,如果已达到结尾,则返回0,出错

返回-1

2. write函数

1)   函数原型:

#include <unistd.h>

ssize_t write(int fd, const void *buf, size_t count);

2)   函数功能:

write系统调用将buf所指向的缓冲区的count个字节内容写入fd指向的文件

3)   参数说明:

fd:要写入的文件

buf:要写入的信息所在的缓存

count:要写入的字节数

返回值:如果write成功,则返回写入的字节数,出错返回-1

3. lseek函数

1)    函数原型:

#include <sys/types.h>

#include <unistd.h>

off_t  lseek(int fildes, off_t offset, int whence);

2)    函数功能:

lseek系统调用用来移动读写指针的位置

3)   参数说明:

fd:要操作的文件

offset:相对whence移动的位移数,允许负值

whence:起始指针,它有三个取值

SEEK_SET 从文件开始处计算偏移量

SEEK_CUR 从文件指针的当前位置开始计算偏移量

SEEK_END 从文件结尾处开始计算偏移量

文件指针值等于当前指针值加上offset的值。

返回值:调用成功时范围当前的读写位置,也就是距离文件开始处多少字节,若

有错误返回-1

4)  常见用法:

将文件读写指针移动到文件开头:

lseek(int fildes, 0, SEEK_SET);

将文件读写指针移动到文件结尾:

  lseek(int fildes, 0, SEEK_END);

  获取文件读写指针当前的位置

  lseek(int fikdes, 0, SEEK_CUR);

注意:有些设备(或者说设备文件)不能使用lseek,linux系统不允许lseek()对tty设备进行操作,此项操作会使得lseek()范围错误代码ESPIPE

read、write和lseek,布布扣,bubuko.com

时间: 2024-10-07 02:34:43

read、write和lseek的相关文章

【UNIX环境高级编程】文件 IO 操作 - 基础函数 open close creat lseek write read 详解

博客地址 : http://blog.csdn.net/shulianghan/article/details/46980271 一. 文件打开关闭操作相关函数介绍 1. open 函数 (1) open 函数简介 open 函数解析 : -- 函数定义 : #include <fcntl.h> int open(const char *path, int oflag, ...); -- 函数作用 : 打开或者创建一个文件; -- 返回值 : 打开文件成功, 返回文件描述符; 如果失败, 返回

lseek()函数与fseek()函数详解

C语言lseek()函数:移动文件的读写位置 头文件:  #include <sys/types.h>  #include <unistd.h> 定义函数: off_t lseek(int fildes, off_t offset, int whence); 函数说明: 每一个已打开的文件都有一个读写位置, 当打开文件时通常其读写位置是指向文件开头, 若是以附加的方式打开文件(如O_APPEND), 则读写位置会指向文件尾. 当read()或write()时, 读写位置会随之增加,

移动文件读/写指针----lseek

头文件:#include<sys/types.h>.#include<unistd.h> 函数原型:off_t lseek(int fildes,off_t offset,int whence) 参数说明:fildes:文件描述符    offset:偏移量,正数表示正向偏移,负数表示负向偏移. whence:设定从文件的哪里开始偏移,可能取值为SEEK_CUR:为当前位置,SEEK_SET:文件开头:SEEK_END:文件结尾,可分别表示为数字(1,0,2). 返回值:当调用成功

Samsung_tiny4412(笔记)--&gt;Makefile,open,read,write,lseek,poll,ioctl,fasync

/*********************************************************************************** * * Samsung_tiny4412(笔记)-->Makefile,open,read,write,lseek,poll,ioctl,fasync * * * 2015-3-9 阴 深圳 尚观 Var 曾剑锋 **********************************************************

文件操作篇 close creat dup dup2 fcntl flock fsync lseek mkstemp open read sync write

文件操作篇 close creat dup dup2 fcntl flock fsync lseek mkstemp open read sync write close(关闭文件) 相关函数 open,fcntl,shutdown,unlink,fclose 表头文件 #include<unistd.h> 定义函数 int close(int fd); 函数说明 当使用完文件后若已不再需要则可使用close()关闭该文件,二close()会让数据写回磁盘,并释放该文件所占用的资源.参数fd为

lseek 与 ioctl

lseek : 每个打开的文件都记录着当前读写位置,打开文件时读写位置是0,表示文件开头,通常读写多少个字节就会将读写位置往后移多少个字节.但是有一个例外,如果以O_APPEND方式打开,每次写操作都会在文件末尾追加数据,然后将读写位置移到新的文件末尾.lseek和标准I/O库的fseek函数类似,可以移动当前读写位置(或者叫偏移量). #include <sys/types.h>#include <unistd.h> off_t lseek(int fd, off_t offse

Linux文件I/O编程(二)lseek函数

文件I/O编程处理open.read.write.close,等必要函数对文件进行读写操作外,lseek.fcntl也是I/O编程很重要的函数. lseek函数 lseek函数主要用来移动当前读写位置,第一个参数是文件描述符fd,第二个参数是偏移距离,第三个参数是文件内容指针宏,分别有SEEK_SET(文件头),SEEK_CURR(当前位置),SEEK_END(文件尾部).该函数的执行成功返回文件当前位置的偏移量,若是失败返回-1. 改变文件位置指针很重要,如果处理不好会出现读写文件时读取错误数

linux系统编程之lseek帮助文档

通过man 2 lseek可以查看linux中的系统函数lseek函数的帮助文档,为了更好的学习,我把这些重要内容翻译过来 1 NAME 2 lseek - reposition read/write file offset//重置读或写文件的偏移量 3 4 SYNOPSIS//摘要 5 #include <sys/types.h>//如果要使用lseek函数,需要包含这两个头文件 6 #include <unistd.h> 7 8 off_t lseek(int fd, off_

Linux系统开发 2 文件IO open() close() read() write() perror() lseek() fcntl() ioctl()

[本文谢绝转载,原文来自http://990487026.blog.51cto.com] 大纲 Linux系统开发 man 文档的使用 文件IO open() 创建文件,指定权限位 open() 接收参数 创建文件 open() 传两个参数 第三个参数从内存取垃圾值 write()函数 向文件写数据 write()函数的覆盖操作 open()函数文件的追加 open() 创建文件,如果文件已经存在,就报错 测试一个程序最多能创建1021个文件,3个STDIN STDOUT STDERR已经存在了