linuxread函数(转)
read函数(读取⽂件)
read函数可以读取⽂件。读取⽂件指从某⼀个已打开地⽂件中,读取⼀定数量地字符,然后将这些读取的字符放⼊某⼀个预存的缓冲区内,供以后使⽤。
使⽤格式如下:
number = read( ...
read函数(读取⽂件)
read函数可以读取⽂件。读取⽂件指从某⼀个已打开地⽂件中,读取⼀定数量地字符,然后将这些读取的字符放⼊某⼀个预存的缓冲区内,供以后使⽤。
使⽤格式如下:
number = read(handle, buffer ,n) ;
上述read调⽤函数中,各个参数的定义如下:
handle:这是⼀个已经打开的⽂件句柄,表⽰从这个⽂件句柄所代表的⽂件读取数据。
buffer:指缓冲区,即读取的数据会被放到这个缓冲区中去。
n:表⽰调⽤⼀次read操作,应该读多少数量的字符。
number:表⽰系统实际所读取的字符数量。
假设某个⽂件的长度是600字符,⽽n的值是512,则在第1次调⽤读这个⽂件时,系统可以正常地读取512个字符地内容,并将这些字符数量传给number变量,因此number的值将变为88。要第2次读取这个⽂件时,因为⽂件已经没有内容可供读取了,此时系统会返回0给number。另外,如果读取⽂件失败,系统将返回-1给number。
⽐如⼀个有100个字节的⽂件,第⼀次读取10个字节,这时读取指针在第10个字节处。再次进⾏10个字节的读操作时,会接着第⼀次读的位置接着往后读。如果还想从开始读,可使⽤lseek函数定位。
Code:
#include "lyl.h"
#define BUF 512
main()
{
static char filename[]="t1.txt" ;
char buffer[BUF] ;
int handle ;
int i ;
int total = 0 ;
handle = open(filename,O_RDONLY) ;
linux怎么读文件内容
if ( handle == -1 )
{
printf("[%s] create fail
",filename) ;
exit(1) ;
}
else
{
while( (i = read(handle,buffer,BUF) ) > 0 )
total =i ;
}
printf("The total character in 《%s》 is %d
",filename,total ) ;
exit(0) ;
}
程序执⾏结果:
The total character in 《t1.txt》 is 11
$
1234567890
【 read系统调⽤】
功能描述:
从⽂件读取数据。
⽤法:
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
参数:
fd:将要读取数据的⽂件描述词。
buf:所读取到的数据的内存缓冲。
count:需要读取的数据量。
返回说明:
成功执⾏时,返回所读取的数据量。失败返回-1,errno被设为以下的某个值EAGAIN:打开⽂件时设定了O_NONBLOCK标志,并且当前没有数据可读取EBADF:⽂件描述词⽆效,或者⽂件不可读
EFAULT:参数buf指向的空间不可访问
EINTR:数据读取前,操作被信号中断
EINVAL:⼀个或者多个参数⽆效
EIO:读写出错
EISDIR:参数fd索引的时⽬录
备注:
从串⼝读数据,只读⼀次,数据没有读全。加⼊while后,则数据读全了。total_read_bytes=0;
while(read_bytes=read(fd_485,buffer1,256)>0)
{
memcpy(buffer2+total_read_bytes,buffer1,read_bytes);
total_read_bytes+=read_bytes;
}
for(i=0;i<total_read_bytes;i++)
printf("0x%02lx\n",buffer2[i]);
本⽂来⾃CSDN博客,转载请标明出处:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。