unix 环境高级编程阅读笔记1-5章节

Unix 环境高级编程

读者:注意仅仅是记录自己阅读进度,坚持阅读,没有深度
源代码:

http://www.libpix.org/apue/ 第二版

http://www.apuebook.com/code3e.html 第三版

第1章UNIX基础知识

  1. 文件和目录 2017年7月20日
  2. 系统调用和库函数

第2章 UNIX标准话及实现

  1. 最大文件描述符 sysconf

第3章 文件I/O

  1. 引言
  2. 文件描述符 0 1 2
  3. open函数
    O_TRUNC 截短为0
    文件名和路径名截短
  4. create函数
  5. close函数
    内核自动关闭
  6. lseek函数
    错误-1
    od -c file.hole
  7. read 函数
  8. write
    常见原因:磁盘已满,超过文件限制
  9. I/O 效率
    Linux ext2 块长4096
  10. 文件共享
    进程表(记录项)–文件表描述符(状态,读写、标志)–v节点(属性)
    多个进程写入一个文件
  11. 原子操作
    将多个进程写入操作合并为一个步骤。
  12. dup和dup2函数
    复制文件描述符
    另外一种方法fcntl(filedes,F_DUPFD,0)
    与fcntl不同的地方,dup2是原子操作,以及errno不同
  13. sync、fsync和fdatasync函数
    保证磁盘上的文件和缓冲区高速缓存内容的一致性。
    sync(int files) 修改过,然后冲洗缓冲区,排入写队列
  14. fcntl函数
    注意 记录锁时是一个指针
    文件描述符标志
    文件状态标志 F_SETFL O_
  15. ioctl函数
    磁盘操作
  16. /dev/fd

第4章 文件和目录

  1. 引言
  2. stat、fstat和lstat函数
  3. 文件类型
  4. 设置用户ID和设置组ID
  5. 文件访问权限
  6. 新文件和目录的所有权
  7. access函数
  8. unmask函数
  9. chmod和fchmod函数
  10. 粘住位
  11. chown、fchown和lchown函数
  12. 文件长度
    du -s file # 查看file空间
    wc -c file #统计字符
    cat file > file.copy # 填满空洞
  13. 文件截短
    int truncate(const char *pathname, off_t length) ftruncate()
    将截短为length
  14. 文件系统
    命名该目录的目录项和目录中的.项
  15. link、unlink、remove和rename项
  16. 符号链接
  17. symlink和readlink函数
  18. 文件的时间
  19. utime函数
  20. mkdir和rmdir
  21. 读目录
  22. chdir、fchdir和getcwd函数
  23. 设备特殊文件
  24. 文件访问权限
  25. 小结
    stat函数,文件属性了解
  26. 习题
    unix对目录的深度有限制吗?
    答:无,但是文件名有PATH_MAX

第5章 标准I/O库

  1. 引言
    细节:缓冲区分配、优化长度执行I/O
  2. 流和FILE对象
    int fwide(FILE *fp, int mode) mode 参数设定,宽定向(多字节)返回值为正,字节定向为负值,0表示未定向
  3. 标准输入、标准输出、标准错误
    进程预定的三个流。
  4. 缓冲
    • 全缓冲
      malloc flush
    • 行缓冲
      遇到换行符时
      行缓冲长度固定
      冲洗所有行缓冲流
    • 不带缓冲流
      stderr fputs
    • 更改缓冲类型
      void setbuf(FILE *restrict fp, char *restrict buf);
      void setvbuf(FILE *restrict fp, char *restrict buf, int mode, size_t size);
    • 冲洗流
      int fflush(FILE *fp) 是该流所有未写的数据都被传送至内核
  5. 打开流
  6. 读和写流
    • 非格式化I/O
      1. 一次一个字符
      2. 每次一行 fgets和fputs
      3. 直接I/O fread和fwrite
    • 输入函数
  7. 每次一行I/O
    • fgets gets
    • fputs puts
  8. 标准I/O的效率
  9. 二进制I/O
    #include<stdio.h>
    size_t fread(void *restrict ptr,size_t size, size_t nobj, FILE *restrict fp);
    size_t fread(void *restrict ptr,size_t size, size_t nobj, FILE *restrict fp);

  10. 定位流

    1. ftell 和fseek
    2. ftello 和 fseeko
    3. fgetpos 和 fsetpos
  11. 格式化I/O
    • 格式化输出
      printf
      fprintf
      sprintf在该数组的尾端自动加一个null字节,但该字节不包括在返回值中。
      snprintf 显示指定缓冲区大小,避免缓冲溢出。
      vprintf(,va_list arg) 可变参数
    • 格式化输出
      scanf() 同printf…
  12. 实现细节
    调用dup或者fcntl 函数将要调用int fileno(FILE *fp)
  13. 临时文件
    char *tmpname(char *ptr) #创建一个与现有文件名不相同的现有路径名
    FILE *tmpfile(void) #临时文件库,关闭该文件或程序自动删除
  14. 标准I/O的替代软件
    • 效率不高 两次复制
      内核与标准I/O之间
      标准I/O与用户程序的行缓冲之间
      mmap—映射文件
  15. 小结
    I/O缓冲技术
weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值