#Apue

APUE_Chapter5

Published at May 13, 2019 ·  1 min read

第五章 这是一篇没有经过思考整理,单纯搬书的内容,不值得浪费时间去看 标准IO(带缓冲的IO) 流的定向 宽定向 字节定向 缓冲的类型 全缓冲(读写磁盘) 行缓冲 不缓冲(输出到终端) 打开流 fopen freopen fdopen getc() getchar() putchar() fgetc() putc() fputc() fgets() fputs() 设置流的流类型 setbuf setvbuf 定位流 ftell fseek ftello fseeko fgetpos fsetpos 格式化IO printf sprintf fprintf dprintf snprintf 二进制IO fread fwrite 内存流 fmemopen 5-13 中的字符串数组和字符串指针的问题还是没有理解,涉及到 C 内存布局问题,还需要阅读更多资料并实践,这里是资料地址。 5-14 内存流 fseek 后的结果不理解,fseek后hello,world为什么会出现在12个b后面,这12个b是什么鬼,这个地方很疑惑。...


APUE_Chapter4

Published at April 30, 2019 ·  2 min read

APUE 第四章 这是一篇没有经过思考整理,单纯搬书的内容,不值得浪费时间去看 本章主要讲述了 stat 结构体中的每个属性的含义,以及使用。 struct stat { mode_t st_mode; /* 文件类型以及模式(权限) */ ino_t st_ino; /* i节点编号 */ dev_t st_dev; /* 设备号(文件系统) */ dev_t st_rdev; /* 设备号(特殊文件) 字符特殊设备和块特殊设备 */ nlink_t st_nlink; /* 链接数 */ uid_t st_uid; /* 所属者的用户ID */ gid_t st_gid; /* 所属组的组ID(有歧义所属者的组ID) */ off_t st_size; /* 普通文件的字节数 */ struct timespec st_atime; /* 最后一次访问时间 */ struct timespec st_mtime; /* 最后一次修改时间 */ struct timespec st_ctime; /* 最后一次文件状态修改时间 */ blksize_t st_blksize; /* I/O 块的字节数 */ blkcnt_t st_blocks; /* 分配的磁盘块数 */ } st_mode 文件类型 Unix 下文件类型有如下 7 种...


APUE Cahpter3

Published at April 28, 2019 ·  1 min read

Unix 环境高级编程 第三章 这是一篇没有经过思考整理,单纯搬书的内容,不值得浪费时间去看 文件I/O 讲到一些 Uninx 下的文件操作函数,open creat read close fcntl 其中文件共享一节讲到了内核使用3种数据结构来表示打开的文件 1. 进程表项(每个进程会在进程表中有一个记录项,记录项中有一张此进程打开的文件描述符表) 文件表项(记录文件的文件状态标识,当前的文件偏移量和 v 节点指针) v节点表(记录文件类型和操作文件的函数指针还有 i 节点) 这里给出 APUE 中的图 这张图还是比较详细的 讲到多进程模式下的文件操作,以及系统提供的对于文件的原子操作 read 中提到的预读(read ahead),读出多余应用需要的,预备下次使用,减少I/O write 中提到文件系统的延迟写(delayed write)的流程,先写高速缓冲区然后进队列,最后进磁盘,减少I/O 找到一个质量比较高的关于文件系统的资源,有兴趣的可以看看 lseek 文件中的空洞不占用磁盘块(已经验证),但是文件结尾的空洞会占磁盘块(未验证) 这里给出一个在 linux 上快速生成指定大小文件的命令 dd dd if=/dev/zero of=file.txt count=1024 bs=1024 if 是要读取的文件 of 是要写入的文件 count 是要 copy 的次数 bs 是每次写入的字节数 dd 大多数时候用来测试操作系统的写入速度...



Recent posts

Leetcode30

ElasticSearch 系列(一)

Mysql 分区表实践

Kafka 入门

Hugo 安装


Archives

2020 (11)
2019 (56)