linux unistd.h 和stdio.h 头函数

 stdio.h  是标准IO接口(like fwrite fread()).,对底层内核的封装,提供缓冲,全缓冲,行缓冲来减少read ,write 调用的次数。  

  stdio.h 的源码可以参考:

  https://www.gnu.org/software/m68hc11/examples/stdio_8h-source.html

  可以看到

        判断文件结束的EOF 被定义为 -1

   #define EOF     (-1)

  unistd.h 是POSIX API(like write read()). 不带缓冲的IO,直接调用内核API。

 unistd.h 是 C 和 C++ 程序设计语言中提供对 POSIX 操作系统 API 的访问功能的头文件的名称。是UniStandard的缩写。该头文件由 POSIX.1 标准(单一UNIX规范的基础)提出,故所有遵循该标准的操作系统和编译器均应提供该头文件(如 Unix 的所有官方版本,包括 Mac OS XLinux 等)。

对于类 Unix 系统unistd.h 中所定义的接口通常都是大量针对系统调用的封装(英语:wrapper functions),如 forkpipe 以及各种 I/O 原语(readwriteclose 等等)。

    是不是标准IO就不直接调用read write 就要慢呢?

    标准IO与直接调用read和write 函数相比效率并不慢多少(参考apue p125),对于复杂的应用,主要由于用户应用本身的各种处理的消耗。

    这块要做个练习证明一下。

转载于:https://www.cnblogs.com/snail88/p/8076082.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值