[linux程序设计笔记]第7章:数据管理(省略了后面的数据库那个)
2011-11-08 10:22
323 查看
数据管理
A 内存:
1. 内存的分配:
(void *) malloc(size_t size)
size_t在32位机上被解释为unsiged int,size是分配的内存大小(按字节算)。
返回的是空指针。你可以用任意方式操作这段内存。接收变量会记录其首地址,并规定操作方式。
如:
char * s;
s=(char *) malloc(sizeof(char)); //刚好分配一个字节,并用char的方式操作。s变量映射到首地址
s=(char *) malloc(1024); //分配1KB的内存,并用s指向第一个字节。
s++; //将s指向的地址向前移动。
2. 内存的释放:
void free(void * ptr_to_memory);
问题是:如果我使得内存指针+1之后,再释放s,那么内存是否完全被释放掉?
B 文件:
1.锁文件:
适用:对整个文件进行封锁。
方式:需要封锁某个文件的时候,测试并创建一个临时文件的锁文件。如果存在则失败,否则则创建成功。
实现:open带O_CREAT和O_EXCL参数,如果文件已经存在,创建会失败,同时在最后unlink掉这个tmp文件。
2.文件锁:
适用:对于一个大型文件的某些区域进行封锁。
方式:对文件中的某些位置进行设置,利用ftcnl、flock完成。包括读锁,写锁,解除锁。
实现:
a 文件锁结构体flock:
l_type :包括F_RDLCK、F_WRlCK、F_UNLCK
l_Whence: 包括SEEK_SET、SEEK_CUR或SEEK_END;
l_start : 开始位置(以字节算)
l_len : 封锁长度(以字节算)
l_pid :拥有锁进程的标识代码
b fcntl函数
int fcntl(int fildes,int command,....);
一般调用形式: res=fcntl(fileID,F_GETLK,&flock);
res=fcntl(fileID,F_SETLK,&flock);
其中
F_GETLK:用来打开文件的封锁信息。它不会对文件进行封锁。
它给出想要封锁的区域,如果文件目前的封锁状态不允许调用者
封锁文件,则会将信息覆盖掉原来的flock,如果调用者申请的封锁
信息能够被成功设置,则flock结构保持不变。
调用成功,fcntl返回不是-1的值。此时需要检查flcok是否被修改。
因为一般这种情况会把l_pid设置为-1,所以检查这一位就可以了。
F_SETLK:
对某个区域进行封锁,这个时候没有l_pid。
成功返回不是-1的值,失败返回-1.
A 内存:
1. 内存的分配:
(void *) malloc(size_t size)
size_t在32位机上被解释为unsiged int,size是分配的内存大小(按字节算)。
返回的是空指针。你可以用任意方式操作这段内存。接收变量会记录其首地址,并规定操作方式。
如:
char * s;
s=(char *) malloc(sizeof(char)); //刚好分配一个字节,并用char的方式操作。s变量映射到首地址
s=(char *) malloc(1024); //分配1KB的内存,并用s指向第一个字节。
s++; //将s指向的地址向前移动。
2. 内存的释放:
void free(void * ptr_to_memory);
问题是:如果我使得内存指针+1之后,再释放s,那么内存是否完全被释放掉?
B 文件:
1.锁文件:
适用:对整个文件进行封锁。
方式:需要封锁某个文件的时候,测试并创建一个临时文件的锁文件。如果存在则失败,否则则创建成功。
实现:open带O_CREAT和O_EXCL参数,如果文件已经存在,创建会失败,同时在最后unlink掉这个tmp文件。
2.文件锁:
适用:对于一个大型文件的某些区域进行封锁。
方式:对文件中的某些位置进行设置,利用ftcnl、flock完成。包括读锁,写锁,解除锁。
实现:
a 文件锁结构体flock:
l_type :包括F_RDLCK、F_WRlCK、F_UNLCK
l_Whence: 包括SEEK_SET、SEEK_CUR或SEEK_END;
l_start : 开始位置(以字节算)
l_len : 封锁长度(以字节算)
l_pid :拥有锁进程的标识代码
b fcntl函数
int fcntl(int fildes,int command,....);
一般调用形式: res=fcntl(fileID,F_GETLK,&flock);
res=fcntl(fileID,F_SETLK,&flock);
其中
F_GETLK:用来打开文件的封锁信息。它不会对文件进行封锁。
它给出想要封锁的区域,如果文件目前的封锁状态不允许调用者
封锁文件,则会将信息覆盖掉原来的flock,如果调用者申请的封锁
信息能够被成功设置,则flock结构保持不变。
调用成功,fcntl返回不是-1的值。此时需要检查flcok是否被修改。
因为一般这种情况会把l_pid设置为-1,所以检查这一位就可以了。
F_SETLK:
对某个区域进行封锁,这个时候没有l_pid。
成功返回不是-1的值,失败返回-1.
相关文章推荐
- Linux 学习笔记 -- 第二部分 Linux 文件、目录与磁盘格式 -- 第7章 Linux 文件与目录管理
- 数据库笔记03:管理数据表中的数据
- Beginning Linux Programming 笔记(七)数据管理
- Linux 程序设计学习笔记----文件管理系统
- Linux 程序设计学习笔记----Linux下文件类型和属性管理
- 本人开发系统--新生报到与数据统计管理系统--数据库设计及相关查询SQL语句笔记
- 【数据库学习笔记】MySQL_01_概述,操作库,操作表,管理数据
- Linux 程序设计学习笔记----POSIX 文件及目录管理
- 数据库笔记06:创建并管理数据表
- Linux 程序设计学习笔记----文件管理实例应用
- Linux 程序设计学习笔记----Linux下文件类型和属性管理
- Linux运维笔记----Mariadb数据库基本管理
- Linux 程序设计学习笔记----进程管理与程序开发(上)
- 现代数据库管理学习笔记之三 组织中的数据建模
- Linux 程序设计学习笔记----进程管理与程序开发(下)
- linux程序设计:第七章 数据管理
- 学习Linux 《鸟哥的Linux私房菜 基础学习篇(第三版)》--第7章 Linux档案与目录管理 笔记
- 大数据技术学习笔记之linux基础2-基础环境与系统管理
- 【数据库学习笔记】Oracle_01_sql*plus,存储结构,用户管理,常用数据类型
- Linux用户账号管理笔记(2015-3-22)