uc5

来源:互联网 发布:新旧系统数据迁移方案 编辑:程序博客网 时间:2024/05/17 01:45
回顾:
  Unix/Linux内存管理 - sbrk()、brk()
   一般用sbrk()分配内存,brk()回收内存
   底层维护了一个位置,以1个内存页为基本单位
   mmap()/munmap()
   虚拟内存地址和物理内存/硬盘文件 做映射
   映射以后 虚拟内存地址才能被用来存储数据
  基本的文件操作- open() close() read() write()
 
今天:
  练习:
   把员工信息写入文件,要求用cat/vi能看清楚信息
   提示:只有字符串类型才能被vi看清楚。
   把员工信息拼接成一个很长的字符串再写入文件
    sprintf() 和printf() fprintf() 用法基本一样
  关于标C函数和Uc函数的区别:
   标C函数 都有 输入/输出缓冲区,而Uc函数在用户层是没有缓冲区,因此,频繁输入输出时,Uc函数最好自定义一个缓冲区(char buf[])。
  如果对于性能没有特殊的要求,使用标C函数即可,有特殊要求,使用UC函数更好。
 
   dup()和dup2()都可以复制文件描述符,区别是:
   dup()返回的是 系统帮忙查找的 未使用的最小值
   dup2()返回的是 第二个参数,如果该值已经被使用,会先 关闭 然后再使用。
   dup() dup2() 复制文件描述符,但不复制对应的文件表。
   使用文件描述符时,内存中对应一个文件表,在文件表中,会记录 关于内存中文件表的信息和硬盘上的文件的信息,其中,i节点 是文件在 硬盘上的 地址。
  lseek() 是 fseek()的底层实现,是系统调用。
  第一个参数 是 fd
  第二个参数 是 偏移量
  第三个参数 是 偏移的起始位置,有3种选择:
  SEEK_SET - 从文件头开始
  SEEK_CUR - 从当前位置开始
  SEEK_END - 从文件尾开始
  开发中,更多使用 SEEK_SET。
  fcntl()用法:
    fcntl(int fd,int cmd,...)
   1 可以复制文件描述符 (cmd取F_DUPFD)
   2 可以获取/设置文件的状态(cmd取F_GETFL/SET)
   3 实现文件锁(cmd取F_SETLK/F_GETLK/F_SETLKW)
  当复制文件描述符时,和dup2类似,不同点:
   a 不会强制关闭已经使用的描述符
   b 返回值是大于等于 第三个参数
  获取/设置文件状态时,创建文件的标识不能获取也不能设置(O_CREAT/O_TRUNC/O_EXCL),文件的访问权限标识不能修改。
 经验:
  位与运算 经常用于 取某一位二进制的值和取某几位二进制的值。比如:取a的最后8位二进制:
  a&0xFF
  最大int:0x7FFFFFFF,最小int:0x80000000
  16进制 是二进制的 简写,4位合成 1位。
 
 文件锁 - 用来锁定对文件的读写操作
  现在主流的锁都是 读写锁,由两种锁组成:
   1 读锁 是共享锁,锁定写操作,允许读操作,用于读文件。
   2 写锁 是独占锁,锁定其他进程的操作(无论读写)
 
 作业:
   用 今天的函数实现 用户登录。
   增强字符串 相关知识。
用 今天的函数实现 用户登录。
   增强字符串 相关知识。

0 0
原创粉丝点击