- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 Linux应用程序编程基础
第7章 Linux应用程序编程基础 Linux系统的应用程序是为了完成某项或者某些特定任务的计算机程序,应用程序和文档组成了软件。应用程序都是在操作系统基础上运行的,Linux应用程序运行在用户模式,可以通过Shell或者图形界面与用户交互。应用程序运行在独立的进程,拥有自己独立的地址空间,通俗的说,在一个应用程序看来,他自己拥有计算机的资源,并不知道其他应用程序的存在。本章讲解Linux应用程序开发的重要概念,主要内容如下: C内存管理 ANSI C文件读写操作 POSIX文件读写操作 7.1 内存管理和使用 内存管理是计算机编程的一个重要部分,也是许多程序员头疼的一个部分。在目前的嵌入式系统中,资源仍然是有限的。在程序设计的时候,内存管理十分重要。C程序的内存管理灵活,接口简单,这也是初学者容易出错的根本,读者在学习本节内容的时候应注重多实践。本节首先讲解Linux程序的基本结构,之后介绍C程序的内存管理函数,最后给出了C程序内存管理的实例。 7.1.1 堆和栈的区别 1.栈 栈(stack)是一个由编译器分配释放的区域,用来存放函数的参数,局部变量等。操作方式类似于数据结构教材里的栈。当调用函数时,被调用函数的参数和返回值被存储到当前程序的栈区,之后被调用函数在为自身的自动变量和临时变量在栈区上分配空间。当函数调用返回时,在栈区内的参数返回值,自动变量和临时变量等会被释放。这就是为什么C语言函数参数如果不是指针的话,被修改的参数结果用户无法得到的原因。 函数的调用和栈的使用方式保证了不同函数内部定义相同名字的变量不会混淆。栈的管理方式是FILO(First In Last Out),称作先进后出,学过数据结构的读者知道,栈内的数据是在一个方向管理的,先到达的数据最后被读出来,生活中就有这样的例子,比如火车的栈,就是车头先进入,但是出来的时候却是车尾先出来,车头最后出。 7.1.1 堆和栈的区别 2.堆 堆(heap)一般位于bss段和栈之间,用来动态分配内存。这段区域由程序员管理,程序员利用操作系统提供的分配和释放函数使用堆区的内存。如果程序员在堆上分配了一段内存,却没有释放,在目前主流的操作系统上,退出时会被操作系统释放。但是这并不是一个好的习惯,因为堆区的空间不是无限的,过多姆峙浠岬贾露涯诖嬉绯觯绦蛞斐I踔帘览! 堆的管理与栈不同,操作系统在堆空间维护一个链表(请参考数据结构相关定义),每次程序员从堆分配内存的时候操作系统会从堆区扫描未用空间,当一个空间的大小符合申请空间的时候,就把此空间返回给程序员,同时会把申请的空间加入链表;当程序员释放一个空间的时候,操作系统会从堆的链表中删除指定的节点,并且把释放的空间放回未用空间。 7.1.2 内存管理函数malloc()和free() C程序有两个主要的内存管理函数:malloc()函数负责分配内存;free()函数释放malloc()分配的内存。这两个函数都是C标准库stdlib.h头文件定义的,Linux系统函数原型: void *malloc(size_t size); void free(void *ptr); 7.1.3 实用的内存分配函数calloc()和realloc() 在C程序开发项目中,还有两个实用的内存分配函数:calloc()用来分配一块新内存;realloc()用来改变一块已经分配的内存的大小。这两个函数都是在C标准库的stdlib.h头文件定义的。 1.calloc()函数 2.realloc()函数 7.1.4 内存管理编程实例 本节给出一个内存管理编程实例。该实例代码展示了malloc()函数,calloc()函数分配内存空间写入字符串,之后使用realloc()函数重新分配内存空间,最后释放动态分配的内存。程序在分配的内存空间内写入字符串,通过打印字符串到屏幕展示内存分配的结果。 7.2 ANSI C文件管理 本节重点讲解ANSI C文件库。包括文件指针的概念;文件和流之间的关系;文本和二进制文件;和文件的基本操作。ANSI的C标准文件库封装了文件的系统调用,为了提高效率还加入了文件缓冲机制,提供记录的方式读写文件,并且具有良好的可移植性和健壮性,是Linux C语言最基本的文件编程。 7.2.1 文件指针和流 文件是可以永久存储的,有特定顺序的一个有序,有名称的字节组成的集合。在Linux系统中,通常能见到的目录、设备文件和管道等,都属于文件,具有不同的特性。本节描述的ANSI文件只能用于普通文件操作。 ANSI文件操作提供了一个重要的结构-文件指针FIL。文件的打开、读写和关闭以及其他访问都要通过文件指针完成。FILE结构通常作为FILE*的方式使用,因此被称作文件指针,这个结构在stdio.h头文件的定义: t
您可能关注的文档
- 第6章设计概算.ppt
- 第6讲 汽车消费规划.ppt
- 第6讲 文学常识与名著阅读.ppt
- 第6章车身制造工艺.ppt
- 第6章液压系统的安装调试.ppt
- 第6讲 表格与表单.ppt
- 第6讲 地籍图测绘.ppt
- 第6讲_位运算符.ppt
- 第6讲城市规划影响因素及分析方法产业.ppt
- 第6课 电脑设备我会连.ppt
- 2024年度党员干部民主生活会班子对照检查材料.docx
- 公司党委领导班子2024年度民主生活会对照检查材料4个带头方面.docx
- 市府办(政府办)领导班子2024年民主生活会会后综合情况报告.docx
- 在2025年市司法局信息宣传工作推进会上的讲话.docx
- 在2025年全省文化旅游高质量发展推进会上的讲话.docx
- 在2025年全区工业、住建大规模设备更新推进会上的讲话.docx
- 党支部2024年组织生活会民主评议党员情况总结报告_1.docx
- 2024年度组织生活会个人对照检查剖析材料.docx
- 镇党委书记2024年度民主生活会对照检查材料1.docx
- 党支部2024年组织生活会民主评议党员情况总结报告.docx
最近下载
- 新能源车与传统燃油车PK.pptx
- 电桩车位出租合同6篇.docx
- 成人肥胖食养指南(2024年版).pdf
- 机械制图习题集第4版张绍群习题答案.pdf
- 2025届广东省深圳高级中学高中园高三下学期第一次模拟考试政治试题(原卷版+解析版).docx VIP
- 新教科版(2024)小学一年级科学下册第一单元第4课《4.认识物体的形状》精品课件.pptx VIP
- 基于EPC模式的项目管理项目协调管理80课件讲解.pptx
- 东菱EPS-BS驱动器技术手册V1.5.pdf
- 老年心房颤动诊治中国专家共识2024版.pptx VIP
- 新时代思想学生读本(高中)5.5《促进人与自然和谐共生》课件.pptx VIP
文档评论(0)