免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1794 | 回复: 1
打印 上一主题 下一主题

文件I/O编程 (open、read、write、lseek、close) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-16 09:24 |只看该作者 |倒序浏览

                                通常,一个进程打开时,都会打开3个文件:标准输入、标准输出和标准出错处理。这3个文件分别对应文件描述符为0、1和2(也就是宏替换STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO)。
不带缓存的文件I/O操作,这里指的不带缓存是指每一个函数只调用系统中的一个函数。主要用到5个函数:open、read、write、lseek和close。
open函数语法要点
所需头文件:#include//提供类型pid_t的定义
         #include
         #include
函数原型:int open(const char *pathname,flags,int perms)
函数传入值:
path:被打开文件名(可包括路径名)
flag:文件打开的方式,参数可以通过“|”组合构成,但前3个参数不能互相重合。
     O_REONLY:只读方式打开文件
     O_WRONLY:可写方式打开文件
     O_RDWR:读写方式打开文件
     O_CREAT:如果文件不存在时就创建一个新文件,并用第三个参数为其设置权限。
     O_EXCL:如果使用O_CREAT时文件存在,则可返回错误信息。这一参数可测试文件是否存在。
     O_NOCTTY:使用本参数时,如文件为终端,那么终端不可以作为调用open()系统调用的那个进程的控制终端。
     O_TRUNC:如文件已经存在,并且以只读或只写成功打开,那么会先全部删除文件中原因数据。
     O+APPEND:以添加方式打开文件,在打开文件的同时,文件指针指向文件末尾。
     perms:被打开文件的存取权限,为8进制表示法。
函数返回值:成功:返回文件描述符 失败:-1
Close 语法要点
所需头文件:#include
函数原型:int close(int fd)
函数输入值:fd:文件描述符
函数返回值:成功:0          出错:-1
Read函数语法要点
所需头文件:#include
函数原型:ssize_t read(int fd,void *buf,size_t count)
函数传入值
fd:文件描述符
Buf:指定存储器读出数据的缓冲区
Count:指定读出的字节数
函数返回值:成功:读出的字节数  0:已到达文件尾    -1:出错
在读普通文件时,若读到要求的字节数之前已达到文件的尾部,则返回字节数会小于希望读出的字节数。
Write函数语法要点
所需头文件:#include
函数原型:  ssize_t write(int fd,void *buf,size_t count)
函数传入值:
fd:文件描述符
Buf:指定存储器写入数据的缓冲区
Count:指定读出的字节数
函数返回值:成功:已写的字节数     -1:出错
Lseek函数语法要点:  
所需头文件:#include
#include
函数原型:off_t lseek(int fd,off_t offset,int whence)
函数传入值:
fd:文件描述符
Offset:偏移量,每一读写操作所需要移动的距离,单位是字节的数量,可正可负(向前移,向后移)
Whence:当前位置的基点:
     SEEK_SET:当前位置为文件开头,新位置为偏移量的大小
     SEEK_CUR:当前位置为文件指针位置,新位置为当前位置加上偏移量
     SEEK_END:当前位置为文件的结尾,新位置为文件的大小加上偏移量大小
函数使用实例:
/**/
#include
#include
#include
#include
#include
#include
#include
int main(void)
{
    char *buf="Hello! I'm writing to this file!";
    char buf_r[11];
    int fd,size,len;
    len = strlen(buf);
    buf_r[10] = '\0';
    /*首先调用open函数,并指定相应的权限*/
    if ((fd = open("hello.c", O_CREAT | O_TRUNC | O_RDWR,0666 ))
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/43090/showart_1965580.html

论坛徽章:
0
2 [报告]
发表于 2012-05-19 17:03 |只看该作者
本帖最后由 lmlmyunigong 于 2016-03-20 19:17 编辑

aaaaaaaaaaaaaaaaaaaaaaa
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP