Linux程序开发环境:Linux程序设计 数据管理.pptx

Linux程序开发环境:Linux程序设计 数据管理.pptx

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

Linux程序设计环境CH11Linux程序设计III数据管理

回顾在终端进行用户交互使用curses函数库开发基于文本的屏幕

本章目标动态内存管理文件锁定dbm数据库

内存管理内存管理Linux是类Unix的操作系统,同样实现了X/Open规范,具备以下特点:以简洁、高效的方式管理内存不允许程序直接访问物理内存(一些特殊的嵌入式程序除外)良好的内存保护机制支持虚拟内存

内存管理内存管理——简单内存分配Linux中使用标准C语言函数库中的malloc调用来分配内存。函数原型为:使用范例#includestdlib.hvoid*malloc(size_tsize);

内存管理内存管理——请求全部物理内存

内存管理内存管理——滥用内存

内存管理内存管理——空指针

内存管理内存管理——释放内存释放内存通过free函数来实现,函数原型为:#includestdlib.hvoidfree(void*ptr_tomemory)

内存管理内存管理——其他内存分配函数另外两个和动态内存管理相关的函数为calloc和realloc,其原型为:其中calloc函数主要用于给结构数组进行内存空间的分配,且使用calloc函数分配的内存空间会初始化为0。realloc函数用于重新分配内存空间。#includestdlib.hvoid*calloc(size_tnumber_of_elements,size_telement_size)void*realloc(void*existing_memory,size_tnew_size);

文件锁定文件锁定不同程序之间经常需要共享数据,在操作系统层面是通过文件来实现的,因此文件锁定是多用户、多任务操作系统中一个重要的组成部分。Linux系统中提供了多种特性来实现文件锁定,主要有下面两种:锁文件:利用原子操作创建锁文件;区域锁定。

文件锁定文件锁定——创建锁文件Linux中创建锁文件的方式是:使用open系统调用,同时带上O_CREATE和O_EXCL标志,从而实现以一个原子操作同时完成确定文件是否存在和创建文件两项工作。

文件锁定文件锁定——区域锁定创建锁文件的方式适合建立单一设备的建议性的锁,针对大型的共享文件需要用到区域锁定。Linux中可以通过fcntl系统调用来实现区域锁定,其原型为:fcntl对一个打开的文件描述符进行操作,并根据command参数完成不同的任务,command命令包含:F_GETLK:查看文件中某个区域的当前锁状态;F_SETLK:给文件中指定的区域进行加锁或解锁;F_SETLKW:和上一个类似,区别在于如果失败会一直尝试。#includefcntl.hintfcntl(intfildes,intcommand,...);intfcntl(intfildes,intcommand,structflock*f)

文件锁定文件锁定——区域锁定1.头文件和变量声明

文件锁定文件锁定——区域锁定2.打开一个文件描述符3.给文件添加一些数据

文件锁定文件锁定——区域锁定4.把文件的10-30字节设为区域1,并设置共享锁5.把文件的40-50字节设为区域2,并设置独占锁

文件锁定文件锁定——区域锁定6.锁定文件

dbm数据库dbm数据库——简介所有版本的Linux以及大多数的Unix版本都随系统附带一个基本的、高效的数据存储程序——dbm数据库。使用RPM的Linux发行版本、LDAP的开源实现、Apache等都是使用dbm作为数据库的。dbm数据库的版本可以分为dbm、ndbm和gdbm三种。dbm是一个基于索引的数据库。

dbm数据库dbm数据库——访问函数1.dbm_open():用于打开已有数据库或者创建数据库。2.dbm_store():将数据存储到数据库。3.dbm_fetch():从数据库中检索数据。4.dbm_close():关闭用dbm_open()打开的数据库。

dbm数据库dbm数据库——使用范例1.头文件、声明及定义。

dbm数据库dbm数据库——使用范例2.一些结构的定义。

dbm数据库dbm数据库——使用范例3.打开测试数据库。

dbm数据库dbm数据库——使用范例4.添加数据到结构体。

dbm数据库dbm数据库——使用范例5.设置索引关键字,然后存储到数据库。

dbm数据库dbm数据库——使用范例6.检索数据,然后关闭数据库。

dbm数据库dbm数据库——其他函数1.dbm_delete():从数据库删除数据项。2.dbm_error():测试是否发生错误。3.dbm_clearerr():清除已被置位的错误标志。4.dbm_firstkey()和db

文档评论(0)

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

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

1亿VIP精品文档

相关文档