linux软件开发基础_第7章

linux软件开发基础_第7章

ID:33926513

大小:906.33 KB

页数:11页

时间:2019-03-01

linux软件开发基础_第7章_第1页
linux软件开发基础_第7章_第2页
linux软件开发基础_第7章_第3页
linux软件开发基础_第7章_第4页
linux软件开发基础_第7章_第5页
资源描述:

《linux软件开发基础_第7章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2008-5-18知识回顾第章gcc、gdb、cvs7cproto开发工具其他工具indentfilear文件编程make及MakefileIC-MSP<2.0>IC-MSP<2.0>本章目标Linux文件操作概述文件、目录与设备与UNIX一样,Linux环境中的文件具有特别重要的意义,因为它们为操作系统服务和设备提供了一个简单而统一的系统调用接口。在Linux中,一切(或几乎一切)都是文件。文件访问的底层操作、错误及其处理这就意味着,通常序常程序完完全可以像像使使文用文件件样那样使使用磁盘文件、串行口、打印机和其他设备。但是有一些例外的/proc文件系统情况,如网

2、络连接,但大多数情况下,你只需要使用五个基本函数——open、close、read、write和ioctl就可以完成对设备的操作。高级编程fcntl与mmapIC-MSP<2.0>IC-MSP<2.0>Linux下的几个重要设备访问设备驱动程序的底层函数1./dev/console这个设备代表的是系统控制台。在现代的工作站和Linux上,它通常是“活跃”的虚拟控制台;而在X窗口系统中,它是屏幕上一个特殊的控制台窗口。¢open:打开文件或设备。2./dev/tty¢read:从打开的文件或设备里读数据。如果一个进程有控制终端的话,那么特殊文件/dev/tty就是这个

3、控制终端(键盘和显示屏,或串口)的别名(逻辑设备)。¢write:向文备文件或设备写数据。注意,虽然/dev/console设备只有一个,但通过/dev/tty却能够访问许多不同的物理设备。¢close:关闭文件或设备。3./dev/null这是空(null)设备。所有写向这个设备的输出都将被丢弃。而¢ioctl:把控制信息传递给设备驱动程序。读这个设备会立刻返回一个文件尾标志,所以在cp命令里可以把它用做拷贝空文件的源文件。人们常把不需要的输出重定向到/dev/null。IC-MSP<2.0>IC-MSP<2.0>12008-5-18系统调用的特点用户、设备驱动、

4、内核和硬件的关系¢系统调用会影响系统的性能。与函数调用相比,系统调用的开销要大些,因为在执行系统调用时,Linux必须从用户代码切换到内核代码运行,然后再返回用户代码。减少这种开销的一个好方法是,在程序中尽量减少系统调用的次数,并且让每次系统调用完成尽可能多的工作。例如每次读写大量的数据而不是每次仅读写一个字符。¢硬件会对底层系统调用一次所能读写的数据块做出一定的限制。例如,磁带机通常的写操作数据块长度是10k,所以如果所写的数据量不是10k的整数倍,磁带机还是会以10k为单位卷绕磁带,这就在磁带上留下了空隙。IC-MSP<2.0>IC-MSP<2.0>三个特殊的文

5、件描述符write系统调用每个运行中的程序被称为进程(process),它有一些与之关联的函数原型:文件描述符。这是一些小值整数,你可以通过它们访问打开的文件或#include设备。有多少文件描述符可用取决于系统的配置情况。当开始运行程size_twrite(intfildes,constvoid*buf,size_tnbytes);序时,它一般会有三个打开的文件描述符。它们是:函数功能:ò0:标准输入(stdin)将缓冲区buf的前nbytes个字节写入与文件描述符fildes关联的文件中。它返回实际写入的字节数。如果文件描述符有错或者底层的设

6、备驱动程ò1:标准输出(stdout)序对数据块长度比较敏感,该返回值可能会小于nbytes。ò2:标准错误输出(stderr)函数返回值:正整数,表示写入数据的字节数。用户可以通过系统调用open将其文件描述符号与文件和设备关联起0,就表示未写出任何数据。来。下面我们将介绍它。同时,使用自动打开的文件描述符,就已经-1,则表示在write调用中出现了错误,对应的错误代码保存在全局可以让我们通过write来创建一些简单的程序了。变量errno里面。IC-MSP<2.0>IC-MSP<2.0>simple_write.cread系统调用函数原型:#include

7、istd.h>size_tread(intfildes,void*buf,size_tnbytes);函数功能:从与文件描述符fildes相关联的文件里读入nbytes个字节的数据,并把它们存储到数据区buf中。函数返回值:正整数,表示读出数据的字节数。0,就表示未写出任何数据。-1,则表示在write调用中出现了错误,对应的错误代码保存在全局变量errno里面。IC-MSP<2.0>IC-MSP<2.0>22008-5-18simple_read.copen系统调用第一次运行程序时,我函数原型:们使用echo通过管道为#include程序提供

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。