`
codepeak
  • 浏览: 31945 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论
文章列表

扫描目录实例

Beginning Linux Programming P102

标准I/O库

标准I/O库及其头文件stdio.h为底层I/O系统提供了一个通用的接口。这个库现在已经成为了ANSI标准C的一部分。

底层文件访问

当开始运行程序时,他一般会有已经打开的文件描述符:0--标准输入;1--标准输出;2--标准错误。 write系统调用:    #include<unistd.h> size_t write(int fildes,const void * buf,size_t nbytes); read系统调用:    #include <unistd.h> size_t read(int fildes,void *buf,size_t nbytes); open系统调用:    #include <fcntl.h& ...
在输入输出操作中,直接使用底层系统调用的问题是他们的效率很低,为什么呢?     系统调用会影响系统的性能。执行系统调用时,Linux必须从用户代码切换到内核代码运行,然后再返回用户代码。减小这种开销的好方法是,在程序中尽量减少系统调用的次数,并且让每次系统调用完成尽可能多的工作。例如每次读写大量的数据而不是每次仅读写一个字符。     硬件会对底层系统调用一次能读写的数据块做出一定的限制。例如,磁带机通常的写操作数据块长度是10K,所以如果所写的数据量不是10K的整数倍,磁带机还是会以10K为单位绕转磁带,这就在磁带上留下间隙。
Global site tag (gtag.js) - Google Analytics