read()
:读取文件最常用的函数,定义如下:
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
参数含义:
fd: 要读的文件描述符
buf: 缓冲区,存放读到的内容。
count: 每次读取的字节数
函数功能:
每次从fd读取count个字节,保存到buf中。
返回值:
返回值大于0,表示读取到的字节数;
等于0在阻塞模式下表示到达文件末尾或没有数据可读(EOF),并调用阻塞;
等于-1表示出错,在非阻塞模式下表示没有数据可读。
实验代码在io/io2.c :路径为:11_Linux系统开发进阶\Linux系统编程_章节使用资料。
在程序中打开hello.txt文件,并读取打印文件内容。
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char buf[4]={0};
size_t rlen;
int fd = open("./hello.txt",O_RDWR);
if(-1 == fd){
perror("open");
return -1;
}
do{//读取文件内容并显示
rlen = read(fd,buf,sizeof(buf));
printf("%s",buf);
memset(buf,0,sizeof(buf));//每次读完清除缓冲区
}while(rlen>0);
printf("\n");
close(fd);
return 0;
}
编译运行: