read 函数:
调用read函数可以从打开的文件中读取数据。
原型:
#include <unistd.h>
ssize_t read(int filedes, void* buf, size_t nbytes);
返回值:若成功则返回读取到的字节数,文件的偏移量将增加至实际读取的字节数,若到了文件末尾返回0,出错返回-1。
很多情况下,实际读取字节数少于要求的字节数,如下:
1.普通文件,在读取要求的字节数之前,已经到达文件尾端。
2.终端,通常一次最多读取一行。(有办法改变这一行为)
3.网络,网络的缓冲机制可能会造成返回字节数小于要求字节数。
4.管道或者FIFO,管道包含的数据少于所要求的字节数时,只返回实际读取的大小。
5.记录设备,一次最多返回一个记录。
6.某信号造成中断,则返回已读的字节数。
实例:将标准输入复制到标准输出
#include “apue.h”
#define BUFFSIZE 4096
int main(void)
{
int n;
char buf[BUFFSIZE];
while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)
{
if (write(STDOUT_FILENO, buf, n) != n)
err_sys(“write error.”);
}
if (n < 0)
err_sys(“read error.”);
}
时间: 2024-10-10 16:17:56