第16章嵌入式LinuxC语言标准库.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第16章嵌入式LinuxC语言标准库

第16章 嵌入式Linux C语言标准库 虽然C语言的功能非常强大,但它事实上是一种非常精练的语言,C的简单性和兼容性使得它的应用非常广泛,大到巨型机的操作系统,小至电子表,都可以很好的运行。在不同的环境中,C的运行方式可能有所差异。在独立运行(如在电子表等设备中)的条件下只能实现语言本身所提供的功能,一些如输入输出、内存管理、字符操作等常见功能并没有包含在这种运行方式中。而在非独立运行的条件下,可以通过调用库提供的函数,实现C所没有提供的功能。在众多的库当中,使用频率最高的当属C标准库,以至于很多的程序员认为标准库是语言的一部分,一些几乎在每个程序中都会出现的函数,如printf、scanf等,其实都是由标准库提供的函数,而不是语言本身的特性。 16.1 Glibc简介 Glibc(GNU C Library)是GNU发布的C标准库,也即C的运行库,是Linux系统中最底层的应用程序开发接口(API),几乎其他的库都会依赖与Glibc。在Glibc中不仅封装了操作系统提供的各种系统服务,而且也提供了许多其他一些必要功能的实现。 16.2 字符测试和数据转换函数 16.2.1 字符测试函数 ctype.h中的函数支持单个字符的典型操作,例如确定一个字符a是否为小写,在很多C语言的教科书中都采用了如下的表达式: (‘a’c=c=’z’) 这样写的程序可读性很差,而且这种方式只在ASCII字符集中有效,在别的字符集中结果是未知的。 16.2.2 数据转换函数 这类函数的主要功能是完成将字符或字符串转换为不同类型的数,主要定义在头文件stdlib.h中。 16.3基本I/O函数 Linux针对输入输出(I/O)的函数很直观,可以总结为四个方面:打开、读取、写入和关闭,对应的有四个系统调用,它们是:open()、read()、write()、close()。 16.3.1 open()函数 新的文件描述符是从open()函数得到的。首先回顾该函数的原型: int open (const char *pathname, int flags, mode_t mode); 它的三个参数的含义如下: 参数 pathname: 为C字符串,表示打开的文件名; 参数int flags: 为一个或多个标志,部分可用的标志请读者参见表16-5; 参数mode_t mode:产生文件的权限模式,可以使用八进制数来表示新文件的权限,也可采用sys/stat.h中定义的符号常量,如表16-6所示。当打开已有文件时,将忽略这个参数。 16.3.2 close()函数 当使用完文件可以使用close()关闭该文件,close()会让缓冲区中的数据写回磁盘,并释放该文件所占用的资源。该函数的原型如下: int close(int fd); 参数fd为文件描述符,由open()等函数所返回的有效的文件描述符。若文件顺利关闭则返回0,发生错误则返回-1,并置errno。通常文件在关闭时出错是不常见的,但也不是不可能的情况,特别是关闭通过网络访问的文件来说就会出现这种情况。 16.3.3 read()函数和write()函数 输入输出的操作最终是通过read()和write()这两个函数来完成的,它们的形式和使用方法十分相近,因而放在一起介绍。它们的函数原型为: ssize_t read(int fd, void *buf, size_t count); ssize_r write(int fd, const void *buf, size_t count); 这两个函数的参数都有: 参数fd,表示已打开文件的文件描述符; 参数buf,为指向缓冲区的指针; 参数count,为要读取或写入的字节数。 16.3.4 其他函数 其他常用的基本I/O函数还有表16-7所列的这些。 16.4 标准I/O函数 基于文件流的标准I/O函数与前面所提的基本I/O函数最大的区别就是对缓冲区的利用。低级I/O函数在很多应用中是不带缓冲区的,程序员可以直接操作硬件,这样为开发驱动等底层的系统应用提供了方便。而在高层次的应用中,不带缓冲区的I/O操作效率往往较低,而由用户自行维护缓冲区不仅繁琐,而且容易出错。因此ANSI制定了一系列基于流缓冲的标准I/O函数,如fopen()、printf()、scanf()等。 16.4.1 fopen()函数 打开文件有三个标准函数,分别为:fopen(),fdopen()和freopen()。它们的函数原型如下所示: #include stdio.h FILE *fopen (const char * path, const char *mode); FILE *fdopen (int fd, const char *mode); FILE *fr

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档