码迷,mamicode.com
首页 > 系统相关 > 详细

LINUX原始IO和标准IO

时间:2017-06-04 09:51:11      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:fread   固定   stdio.h   fwrite   输入   pes   文件描述符   需要   库函数   

linux编程中有两类IO, 一类是标准库提供的IO函数fopen, fread , fwrite. 一类是系统接口函数 read ,write等。本文说明两类IO的区别和联系。

区别:

首先看一下两类IO函数的定义:

     fread:     size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;

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

    1. fread 需要传入文件指针从该文件指针读取数据,read函数从一个整形文件描述符读取数据。

     以标准输入为例,fread 需要传入stdin 文件指针作为参数,read 需要传入STDIN_FILENO.

    2.fread 函数有缓存的功能,read函数没有缓存的功能 , 这意味着read

      fread 调用 read 系统接口API从内核读取一块大的数据至库提供的缓存,然后再从该缓存读取数据(size字节)复制到用户提供的buffer。

      read 只从内核中读取固定的count字节

   3.fread只能从文件读取数据,read 是从文件描述符读取数据,文件描述符不一定代表文件,可以是socket 或者 管道.

   4. 头文件不一样,read 的头文件是<fcntl.h> <sys/types.h>,<sys.stat.h> ,<unistd.h>

     fread的头文件stdio.h代表从文件流中读取数据

联系:

       fread函数属于c标准库函数,其功能是调用系统接口read实现的。

LINUX原始IO和标准IO

标签:fread   固定   stdio.h   fwrite   输入   pes   文件描述符   需要   库函数   

原文地址:http://www.cnblogs.com/ThinkerNo-2/p/6939447.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!