QPainter绘制文本转BMP32位深的图片
QPainter文本转BMP32,QImage已经保存BMP图片已经不支持32位深的了,自动降到24位深,自己组织BMP信息保存成bmp32的图片
myCharView.zip
qml charview控件自定义样式,自定义x、y轴显示等
自定义QMessageBox
完整代码:实现了QMessageBox的功能,并可以自定义背景,图标等功能,网上没有找到完整的代码,只有自己实现了,参考了一个大牛一去丶二三里的文章:https://blog.youkuaiyun.com/liang19890820/article/details/50586031,但是感觉他的很复杂,代码也不全,就自己写了个
软考类别、资格、级别对应表
计算机技术与软件专业资格(水平)考试 专业类别、资格名称和级别层次对应表!
软件设计师历年真题全汇总
软件设计师历年真题全汇总(2004上半年-2015上半年)(答案+解析),供四十多份
log查看工具
windows下log查看工具,windows下开发测试的好帮手,一直在用!
重装win7找回linux启动项的方法
重装win7找回linux启动项的方法
Linux设备驱动程序第三版
目录
1. 第一章 设备驱动简介(见 [标题编号.])
1.1. 驱动程序的角色(见 [标题编号.])
1.2. 划分内核(见 [标题编号.])
1.2.1. 可加载模块(见 [标题编号.])
1.3. 设备和模块的分类(见 [标题编号.])
1.4. 安全问题(见 [标题编号.])
1.5. 版本编号(见 [标题编号.])
1.6. 版权条款(见 [标题编号.])
1.7. 加入内核开发社团(见 [标题编号.])
1.8. 本书的内容(见 [标题编号.])
2. 建立和运行模块(见 [标题编号.])
2.1. 设置你的测试系统(见 [标题编号.])
2.2. Hello World 模块(见 [标题编号.])
2.3. 内核模块相比于应用程序(见 [标题编号.])
2.3.1. 用户空间和内核空间(见 [标题编号.])
2.3.2. 内核的并发(见 [标题编号.])
2.3.3. 当前进程(见 [标题编号.])
2.3.4. 几个别的细节(见 [标题编号.])
2.4. 编译和加载(见 [标题编号.])
2.4.1. 编译模块(见 [标题编号.])
2.4.2. 加载和卸载模块(见 [标题编号.])
2.4.3. 版本依赖(见 [标题编号.])
2.4.4. 平台依赖性(见 [标题编号.])
2.5. 内核符号表(见 [标题编号.])
2.6. 预备知识(见 [标题编号.])
2.7. 初始化和关停(见 [标题编号.])
2.7.1. 清理函数(见 [标题编号.])
2.7.2. 初始化中的错误处理(见 [标题编号.])
2.7.3. 模块加载竞争(见 [标题编号.])
2.8. 模块参数(见 [标题编号.])
2.9. 在用户空间做(见 [标题编号.])
2.10. 快速参考(见 [标题编号.])
3. 字符驱动(见 [标题编号.])
3.1. scull 的设计(见 [标题编号.])
3.2. 主次编号(见 [标题编号.])
3.2.1. 设备编号的内部表示(见 [标题编号.])
3.2.2. 分配和释放设备编号(见 [标题编号.])
3.2.3. 主编号的动态分配(见 [标题编号.])
3.3. 一些重要数据结构(见 [标题编号.])
3.3.1. 文件操作(见 [标题编号.])
3.3.2. 文件结构(见 [标题编号.])
3.3.3. inode 结构(见 [标题编号.])
3.4. 字符设备注册(见 [标题编号.])
3.4.1. scull 中的设备注册(见 [标题编号.])
3.4.2. 老方法(见 [标题编号.])
3.5. open 和 release(见 [标题编号.])
3.5.1. open 方法(见 [标题编号.])
3.5.2. release 方法(见 [标题编号.])
3.6. scull 的内存使用(见 [标题编号.])
3.7. 读和写(见 [标题编号.])
3.7.1. read 方法(见 [标题编号.])
3.7.2. write 方法(见 [标题编号.])
3.7.3. readv 和 writev(见 [标题编号.])
3.8. 使用新设备(见 [标题编号.])
3.9. 快速参考(见 [标题编号.])
4. 调试技术(见 [标题编号.])
4.1. 内核中的调试支持(见 [标题编号.])
4.2. 用打印调试(见 [标题编号.])
4.2.1. printk(见 [标题编号.])
4.2.2. 重定向控制台消息(见 [标题编号.])
4.2.3. 消息是如何记录的(见 [标题编号.])
4.2.4. 打开和关闭消息(见 [标题编号.])
4.2.5. 速率限制(见 [标题编号.])
4.2.6. 打印设备编号(见 [标题编号.])
4.3. 用查询来调试(见 [标题编号.])
4.3.1. 使用 /proc 文件系统(见 [标题编号.])
4.3.2. ioctl 方法(见 [标题编号.])
4.4. 使用观察来调试(见 [标题编号.])
4.5. 调试系统故障(见 [标题编号.])
4.5.1. oops 消息(见 [标题编号.])
4.5.2. 系统挂起(见 [标题编号.])
4.6. 调试器和相关工具(见 [标题编号.])
4.6.1. 使用 gdb(见 [标题编号.])
4.6.2. kdb 内核调试器(见 [标题编号.])
4.6.3. kgdb 补丁(见 [标题编号.])
4.6.4. 用户模式 Linux 移植(见 [标题编号.])
4.6.5. Linux 追踪工具(见 [标题编号.])
4.6.6. 动态探针(见 [标题编号.])
5. 并发和竞争情况(见 [标题编号.])
5.1. scull 中的缺陷(见 [标题编号.])
5.2. 并发和它的管理(见 [标题编号.])
5.3. 旗标和互斥体(见 [标题编号.])
5.3.1. Linux 旗标实现(见 [标题编号.])
5.3.2. 在 scull 中使用旗标(见 [标题编号.])
5.3.3. 读者/写者旗标(见 [标题编号.])
5.4. Completions 机制(见 [标题编号.])
5.5. 自旋锁(见 [标题编号.])
5.5.1. 自旋锁 API 简介(见 [标题编号.])
5.5.2. 自旋锁和原子上下文(见 [标题编号.])
5.5.3. 自旋锁函数(见 [标题编号.])
5.5.4. 读者/写者自旋锁(见 [标题编号.])
5.6. 锁陷阱(见 [标题编号.])
5.6.1. 模糊的规则(见 [标题编号.])
5.6.2. 加锁顺序规则(见 [标题编号.])
5.6.3. 细 -粗- 粒度加锁(见 [标题编号.])
5.7. 加锁的各种选择(见 [标题编号.])
5.7.1. 不加锁算法(见 [标题编号.])
5.7.2. 原子变量(见 [标题编号.])
5.7.3. 位操作(见 [标题编号.])
5.7.4. seqlock 锁(见 [标题编号.])
5.7.5. 读取-拷贝-更新(见 [标题编号.])
5.8. 快速参考(见 [标题编号.])
6. 高级字符驱动操作(见 [标题编号.])
6.1. ioctl 接口(见 [标题编号.])
6.1.1. 选择 ioctl 命令(见 [标题编号.])
6.1.2. 返回值(见 [标题编号.])
6.1.3. 预定义的命令(见 [标题编号.])
6.1.4. 使用 ioctl 参数(见 [标题编号.])
6.1.5. 兼容性和受限操作(见 [标题编号.])
6.1.6. ioctl 命令的实现(见 [标题编号.])
6.1.7. 不用 ioctl 的设备控制(见 [标题编号.])
6.2. 阻塞 I/O(见 [标题编号.])
6.2.1. 睡眠的介绍(见 [标题编号.])
6.2.2. 简单睡眠(见 [标题编号.])
6.2.3. 阻塞和非阻塞操作 (见 [标题编号.])
6.2.4. 一个阻塞 I/O 的例子(见 [标题编号.])
6.2.5. 高级睡眠(见 [标题编号.])
6.2.6. 测试 scullpipe 驱动(见 [标题编号.])
6.3. poll 和 select(见 [标题编号.])
6.3.1. 与 read 和 write 的交互(见 [标题编号.])
6.3.2. 底层的数据结构(见 [标题编号.])
6.4. 异步通知(见 [标题编号.])
6.4.1. 驱动的观点(见 [标题编号.])
6.5. 移位一个设备(见 [标题编号.])
6.5.1. llseek 实现(见 [标题编号.])
6.6. 在一个设备文件上的存取控制(见 [标题编号.])
6.6.1. 单 open 设备(见 [标题编号.])
6.6.2. 一次对一个用户限制存取(见 [标题编号.])
6.6.3. 阻塞 open 作为对 EBUSY 的替代(见 [标题编号.])
6.6.4. 在 open 时复制设备(见 [标题编号.])
6.7. 快速参考(见 [标题编号.])
7. 时间, 延时, 和延后工作(见 [标题编号.])
7.1. 测量时间流失(见 [标题编号.])
7.1.1. 使用 jiffies 计数器(见 [标题编号.])
7.1.2. 处理器特定的寄存器(见 [标题编号.])
7.2. 获知当前时间(见 [标题编号.])
7.3. 延后执行(见 [标题编号.])
7.3.1. 长延时(见 [标题编号.])
7.3.2. 短延时(见 [标题编号.])
7.4. 内核定时器(见 [标题编号.])
7.4.1. 定时器 API(见 [标题编号.])
7.4.2. 内核定时器的实现(见 [标题编号.])
7.5. Tasklets 机制(见 [标题编号.])
7.6. 工作队列(见 [标题编号.])
7.6.1. 共享队列(见 [标题编号.])
7.7. 快速参考(见 [标题编号.])
7.7.1. 时间管理(见 [标题编号.])
7.7.2. 延迟(见 [标题编号.])
7.7.3. 内核定时器(见 [标题编号.])
7.7.4. Tasklets 机制(见 [标题编号.])
7.7.5. 工作队列(见 [标题编号.])
8. 分配内存(见 [标题编号.])
8.1. kmalloc 的真实故事(见 [标题编号.])
8.1.1. flags 参数(见 [标题编号.])
8.1.2. size 参数(见 [标题编号.])
8.2. 后备缓存(见 [标题编号.])
8.2.1. 一个基于 Slab 缓存的 scull: scullc(见 [标题编号.])
8.2.2. 内存池(见 [标题编号.])
8.3. get_free_page 和其友(见 [标题编号.])
8.3.1. 一个使用整页的 scull: scullp(见 [标题编号.])
8.3.2. alloc_pages 接口(见 [标题编号.])
8.3.3. vmalloc 和 其友(见 [标题编号.])
8.3.4. 一个使用虚拟地址的 scull : scullv(见 [标题编
8.4. 每-CPU 的变量(见 [标题编号.])
8.5. 获得大量缓冲(见 [标题编号.])
8.5.1. 在启动时获得专用的缓冲(见 [标题编号.])
8.6. 快速参考(见 [标题编号.])
9. 与硬件通讯(见 [标题编号.])
9.1. I/O 端口和 I/O 内存(见 [标题编号.])
9.1.1. I/O 寄存器和常规内存(见 [标题编号.])
9.2. 使用 I/O 端口(见 [标题编号.])
9.2.1. I/O 端口分配(见 [标题编号.])
9.2.2. 操作 I/O 端口(见 [标题编号.])
9.2.3. 从用户空间的 I/O 存取(见 [标题编号.])
9.2.4. 字串操作(见 [标题编号.])
9.2.5. 暂停 I/O(见 [标题编号.])
9.2.6. 平台依赖性(见 [标题编号.])
9.3. 一个 I/O 端口例子(见 [标题编号.])
9.3.1. 并口纵览(见 [标题编号.])
9.3.2. 一个例子驱动(见 [标题编号.])
9.4. 使用 I/O 内存(见 [标题编号.])
9.4.1. I/O 内存分配和映射(见 [标题编号.])
9.4.2. 存取 I/O 内存(见 [标题编号.])
9.4.3. 作为 I/O 内存的端口(见 [标题编号.])
9.4.4. 重用 short 为 I/O 内存(见 [标题编号.])
9.4.5. 在 1 MB 之下的 ISA 内存(见 [标题编号.])
9.4.6. isa_readb 和其友(见 [标题编号.])
9.5. 快速参考(见 [标题编号.])
10. 中断处理(见 [标题编号.])
10.1. 准备并口(见 [标题编号.])
10.2. 安装一个中断处理(见 [标题编号.])
10.2.1. /proc 接口(见 [标题编号.])
10.2.2. 自动检测 IRQ 号(见 [标题编号.])
10.2.3. 快速和慢速处理(见 [标题编号.])
10.2.4. 实现一个处理(见 [标题编号.])
10.2.5. 处理者的参数和返回值(见 [标题编号.])
10.2.6. 使能和禁止中断(见 [标题编号.])
10.3. 前和后半部(见 [标题编号.])
10.3.1. Tasklet 实现(见 [标题编号.])
10.3.2. 工作队列(见 [标题编号.])
10.4. 中断共享(见 [标题编号.])
10.4.1. 安装一个共享的处理者(见 [标题编号.])
10.4.2. 运行处理者(见 [标题编号.])
10.4.3. /proc 接口和共享中断(见 [标题编号.])
10.5. 中断驱动 I/O(见 [标题编号.])
10.5.1. 一个写缓存例子(见 [标题编号.])
10.6. 快速参考(见 [标题编号.])
11. 内核中的数据类型(见 [标题编号.])
11.1. 标准 C 类型的使用(见 [标题编号.])
11.2. 安排一个明确大小给数据项(见 [标题编号.])
11.3. 接口特定的类型(见 [标题编号.])
11.4. 其他移植性问题(见 [标题编号.])
11.4.1. 时间间隔(见 [标题编号.])
11.4.2. 页大小(见 [标题编号.])
11.4.3. 字节序(见 [标题编号.])
11.4.4. 数据对齐(见 [标题编号.])
11.4.5. 指针和错误值(见 [标题编号.])
11.5. 链表(见 [标题编号.])
11.6. 快速参考(见 [标题编号.])
12. PCI 驱动(见 [标题编号.])
12.1. PCI 接口(见 [标题编号.])
12.1.1. PCI 寻址(见 [标题编号.])
12.1.2. 启动时间(见 [标题编号.])
12.1.3. 配置寄存器和初始化(见 [标题编号.])
12.1.4. MODULEDEVICETABLE 宏(见 [标题编号.])
12.1.5. 注册一个 PCI 驱动(见 [标题编号.])
12.1.6. 老式 PCI 探测(见 [标题编号.])
12.1.7. 使能 PCI 设备(见 [标题编号.])
12.1.8. 存取配置空间(见 [标题编号.])
12.1.9. 存取 I/O 和内存空间(见 [标题编号.])
12.1.10. PCI 中断(见 [标题编号.])
12.1.11. 硬件抽象(见 [标题编号.])
12.2. 回顾: ISA(见 [标题编号.])
12.2.1. 硬件资源(见 [标题编号.])
12.2.2. ISA 编程(见 [标题编号.])
12.2.3. 即插即用规范(见 [标题编号.])
12.3. PC/104 和 PC/104+(见 [标题编号.])
12.4. 其他的 PC 总线(见 [标题编号.])
12.4.1. MCA 总线(见 [标题编号.])
12.4.2. EISA 总线(见 [标题编号.])
12.4.3. VLB 总线(见 [标题编号.])
12.5. SBus(见 [标题编号.])
12.6. NuBus 总线(见 [标题编号.])
12.7. 外部总线(见 [标题编号.])
12.8. 快速参考(见 [标题编号.])
13. USB 驱动(见 [标题编号.])
13.1. USB 设备基础知识(见 [标题编号.])
13.1.1. 端点(见 [标题编号.])
13.1.2. 接口(见 [标题编号.])
13.1.3. 配置(见 [标题编号.])
13.2. USB 和 sysfs(见 [标题编号.])
13.3. USB 的 Urbs(见 [标题编号.])
13.3.1. 结构 struct urb(见 [标题编号.])
13.3.2. 创建和销毁 urb(见 [标题编号.])
13.3.3. 提交 urb(见 [标题编号.])
13.3.4. 完成 urb: 完成回调处理者(见 [标题编号.])
13.3.5. 取消 urb(见 [标题编号.])
13.4. 编写一个 USB 驱动(见 [标题编号.])
13.4.1. 驱动支持什么设备(见 [标题编号.])
13.4.2. 注册一个 USB 驱动(见 [标题编号.])
13.4.3. 提交和控制一个 urb(见 [标题编号.])
13.5. 无 urb 的 USB 传送(见 [标题编号.])
13.5.1. usb_bulk_msg 接口(见 [标题编号.])
13.5.2. usb_control_msg 接口(见 [标题编号.])
13.5.3. 使用 USB 数据函数(见 [标题编号.])
13.6. 快速参考(见 [标题编号.])
14. Linux 设备模型(见 [标题编号.])
14.1. Kobjects, Ksets 和 Subsystems (见 [标题编号.])
14.1.1. Kobject 基础(见 [标题编号.])
14.1.2. kobject 层次, kset, 和子系统(见 [标题编号.])
14.2. 低级 sysfs 操作(见 [标题编号.])
14.2.1. 缺省属性(见 [标题编号.])
14.2.2. 非缺省属性(见 [标题编号.])
14.2.3. 二进制属性(见 [标题编号.])
14.2.4. 符号连接(见 [标题编号.])
14.3. 热插拔事件产生(见 [标题编号.])
14.3.1. 热插拔操作(见 [标题编号.])
14.4. 总线, 设备, 和驱动(见 [标题编号.])
14.4.1. 总线(见 [标题编号.])
14.4.2. 设备(见 [标题编号.])
14.4.3. 设备驱动(见 [标题编号.])
14.5. 类(见 [标题编号.])
14.5.1. class_simple 接口(见 [标题编号.])
14.5.2. 完整的类接口(见 [标题编号.])
14.6. 集成起来(见 [标题编号.])
14.6.1. 添加一个设备(见 [标题编号.])
14.6.2. 去除一个设备(见 [标题编号.])
14.6.3. 添加一个驱动(见 [标题编号.])
14.6.4. 去除一个驱动(见 [标题编号.])
14.7. 热插拔(见 [标题编号.])
14.7.1. 动态设备(见 [标题编号.])
14.7.2. /sbin/hotplug 工具(见 [标题编号.])
14.7.3. 使用 /sbin/hotplug (见 [标题编号.])
14.8. 处理固件(见 [标题编号.])
14.8.1. 内核固件接口(见 [标题编号.])
14.8.2. 它如何工作(见 [标题编号.])
14.9. 快速参考(见 [标题编号.])
14.9.1. Kobjects结构(见 [标题编号.])
14.9.2. sysfs 操作(见 [标题编号.])
14.9.3. 总线, 设备, 和驱动(见 [标题编号.])
14.9.4. 类(见 [标题编号.])
14.9.5. 固件(见 [标题编号.])
15. 内存映射和 DMA (见 [标题编号.])
15.1. Linux 中的内存管理(见 [标题编号.])
15.1.1. 地址类型(见 [标题编号.])
15.1.2. 物理地址和页(见 [标题编号.])
15.1.3. 高和低内存(见 [标题编号.])
15.1.4. 内存映射和 struct page(见 [标题编号.])
15.1.5. 页表(见 [标题编号.])
15.1.6. 虚拟内存区(见 [标题编号.])
15.1.7. 进程内存映射(见 [标题编号.])
15.2. mmap 设备操作(见 [标题编号.])
15.2.1. 使用 remap_pfn_range(见 [标题编号.])
15.2.2. 一个简单的实现(见 [标题编号.])
15.2.3. 添加 VMA 的操作(见 [标题编号.])
15.2.4. 使用 nopage 映射内存(见 [标题编号.])
15.2.5. 重新映射特定 I/O 区(见 [标题编号.])
15.2.6. 重新映射 RAM(见 [标题编号.])
15.2.7. 重映射内核虚拟地址(见 [标题编号.])
15.3. 进行直接 I/O(见 [标题编号.])
15.3.1. 异步 I/O(见 [标题编号.])
15.4. 直接内存存取(见 [标题编号.])
15.4.1. 一个 DMA 数据传输的概况(见 [标题编号.])
15.4.2. 分配 DMA 缓冲(见 [标题编号.])
15.4.3. 总线地址(见 [标题编号.])
15.4.4. 通用 DMA 层(见 [标题编号.])
15.4.5. ISA 设备的 DMA(见 [标题编号.])
15.5. 快速参考(见 [标题编号.])
15.5.1. 介绍性材料(见 [标题编号.])
15.5.2. 实现 mmap(见 [标题编号.])
15.5.3. 实现直接 I/O(见 [标题编号.])
15.5.4. 直接内存存取(见 [标题编号.])
16. 块驱动(见 [标题编号.])
16.1. 注册(见 [标题编号.])
16.1.1. 块驱动注册(见 [标题编号.])
16.1.2. 磁盘注册(见 [标题编号.])
16.1.3. 在 sbull 中的初始化(见 [标题编号.])
16.1.4. 注意扇区大小(见 [标题编号.])
16.2. 块设备操作(见 [标题编号.])
16.2.1. open 和 release 方法(见 [标题编号.])
16.2.2. 支持可移出的介质(见 [标题编号.])
16.2.3. ioctl 方法(见 [标题编号.])
16.3. 请求处理(见 [标题编号.])
16.3.1. 对请求方法的介绍(见 [标题编号.])
16.3.2. 一个简单的请求方法(见 [标题编号.])
16.3.3. 请求队列(见 [标题编号.])
16.3.4. 请求的分析(见 [标题编号.])
16.3.5. 请求完成函数(见 [标题编号.])
16.4. 一些其他的细节(见 [标题编号.])
16.4.1. 命令预准备(见 [标题编号.])
16.4.2. 被标识的命令排队(见 [标题编号.])
16.5. 快速参考(见 [标题编号.])
17. 网络驱动(见 [标题编号.])
17.1. snull 是如何设计的(见 [标题编号.])
17.1.1. 分配 IP 号(见 [标题编号.])
17.1.2. 报文的物理传送(见 [标题编号.])
17.2. 连接到内核(见 [标题编号.])
17.2.1. 设备注册(见 [标题编号.])
17.2.2. 初始化每一个设备(见 [标题编号.])
17.2.3. 模块卸载(见 [标题编号.])
17.3. net_device 结构的详情(见 [标题编号.])
17.3.1. 全局信息(见 [标题编号.])
17.3.2. 硬件信息(见 [标题编号.])
17.3.3. 接口信息(见 [标题编号.])
17.3.4. 设备方法(见 [标题编号.])
17.3.5. 公用成员(见 [标题编号.])
17.4. 打开与关闭(见 [标题编号.])
17.5. 报文传送(见 [标题编号.])
17.5.1. 控制发送并发(见 [标题编号.])
17.5.2. 传送超时(见 [标题编号.])
17.5.3. 发散/汇聚 I/O(见 [标题编号.])
17.6. 报文接收(见 [标题编号.])
17.7. 中断处理(见 [标题编号.])
17.8. 接收中断缓解(见 [标题编号.])
17.9. 连接状态的改变(见 [标题编号.])
17.10. Socket 缓存(见 [标题编号.])
17.10.1. 重要成员变量(见 [标题编号.])
17.10.2. 作用于 socket 缓存的函数(见 [标题编号.])
17.11. MAC 地址解析(见 [标题编号.])
17.11.1. 以太网使用 ARP(见 [标题编号.])
17.11.2. 不考虑 ARP(见 [标题编号.])
17.11.3. 非以太网头部(见 [标题编号.])
17.12. 定制 ioctl 命令(见 [标题编号.])
17.13. 统计信息(见 [标题编号.])
17.14. 多播(见 [标题编号.])
17.14.1. 多播的内核支持(见 [标题编号.])
17.14.2. 典型实现(见 [标题编号.])
17.15. 几个其他细节(见 [标题编号.])
17.15.1. 独立于媒介的接口支持(见 [标题编号.])
17.15.2. ethtool 支持(见 [标题编号.])
17.15.3. netpoll(见 [标题编号.])
17.16. 快速参考(见 [标题编号.])
18. TTY 驱动(见 [标题编号.])
18.1. 一个小 TTY 驱动(见 [标题编号.])
18.1.1. 结构 struct termios(见 [标题编号.])
18.2. tty_driver 函数指针(见 [标题编号.])
18.2.1. open 和 close(见 [标题编号.])
18.2.2. 数据流(见 [标题编号.])
18.2.3. 其他缓冲函数(见 [标题编号.])
18.2.4. 无 read 函数?(见 [标题编号.])
18.3. TTY 线路设置(见 [标题编号.])
18.3.1. set_termios 函数(见 [标题编号.])
18.3.2. tiocmget 和 tiocmset(见 [标题编号.])
18.4. ioctls 函数(见 [标题编号.])
18.5. TTY 设备的 proc 和 sysfs 处理(见 [标题编号.])
18.6. tty_driver 结构的细节(见 [标题编号.])
18.7. tty_operaions 结构的细节(见 [标题编号.])
18.8. tty_struct 结构的细节(见 [标题编号.])
18.9. 快速参考(见 [标题编号.])
Linux下的vi编辑器配置文件
文本编辑器Vi 简介
Vi是一个功能强大的全屏幕文本编辑器,是UNIX
上最常用的文本编辑器,它的作用是建立、编辑、显示文本文件。
pVi没有菜单,只有命令。
注意:Vi命令并不锁住所编辑的文件,因此多个用户可能同时编辑一个文件,那么最后保存的文件版本将被保留。
硬盘检测工具
HD Tune Pro硬盘检测工具是一款小巧易用的硬盘工具软件,其主要功能有硬盘传输速率检测,健康状态检测,温度检测及磁盘表面扫描等。另外,还能检测出硬盘的固件版本、序列号、容量、缓存大小以及当前的Ultra DMA模式等。虽然这些功能其它软件也有,但难能可贵的是此软件把所有这些功能积于一身,而且非常小巧,速度又快,更重要的是它是免费软件,可自由使用。
UNIX环境高级编程
图书目录
第1章 UNIX基础知识 1
1.1 引言 1
1.2 UNIX体系结构 1
1.3 登录 1
1.4 文件和目录 3
1.5 输入和输出 6
1.6 程序和进程 8
1.7 出错处理 10
1.8 用户标识 12
1.9 信号 14
1.10 时间值 15
1.11 系统调用和库函数 16
1.12 小结 17
习题 18
第2章 UNIX标准化及实现 19
2.1 引言 19
2.2 UNIX标准化 19
2.2.1 ISO C 19
2.2.2 IEEE POSIX 20
2.2.3 Single UNIX Specification 25
2.2.4 FIPS 26
2.3 UNIX系统实现 26
2.3.1 SVR4 26
2.3.2 4.4BSD 27
2.3.3 FreeBSD 27
2.3.4 Linux 27
2.3.5 Mac OS X 28
2.3.6 Solaris 28
2.3.7 其他UNIX系统 28
2.4 标准和实现的关系 28
2.5 限制 29
2.5.1 ISO C限制 29
2.5.2 POSIX限制 30
2.5.3 XSI限制 32
2.5.4 sysconf、pathconf和fpathconf函数 32
2.5.5 不确定的运行时限制 38
2.6 选项 42
2.7 功能测试宏 44
2.8 基本系统数据类型 45
2.9 标准之间的冲突 45
2.10 小结 46
习题 46
第3章 文件I/O 47
3.1 引言 47
3.2 文件描述符 47
3.3 open函数 48
3.4 creat函数 49
3.5 close函数 50
3.6 lseek函数 50
3.7 read函数 53
3.8 write函数 54
3.9 I/O的效率 54
3.10 文件共享 56
3.11 原子操作 59
3.12 dup和dup2函数 60
3.13 sync、fsync和fdatasync函数 61
3.14 fcntl函数 62
3.15 ioctl函数 66
3.16 /dev/fd 67
3.17 小结 68
习题 68
第4章 文件和目录 71
4.1 引言 71
4.2 stat、fstat和lstat函数 71
4.3 文件类型 72
4.4 设置用户ID和设置组ID 74
4.5 文件访问权限 75
4.6 新文件和目录的所有权 77
4.7 access函数 77
4.8 umask函数 79
4.9 chmod和fchmod函数 81
4.10 粘住位 83
4.11 chown、fchown和lchown函数 84
4.12 文件长度 85
4.13 文件截短 86
4.14 文件系统 86
4.15 link、unlink、remove和rename函数 89
4.16 符号链接 91
4.17 symlink和readlink函数 94
4.18 文件的时间 94
4.19 utime函数 95
4.20 mkdir和rmdir函数 97
4.21 读目录 98
4.22 chdir、fchdir和getcwd函数 102
4.23 设备特殊文件 104
4.24 文件访问权限位小结 106
4.25 小结 106
习题 107
第5章 标准I/O库 109
5.1 引言 109
5.2 流和FILE对象 109
5.3 标准输入、标准输出和标准出错 110
5.4 缓冲 110
5.5 打开流 112
5.6 读和写流 114
5.7 每次一行I/O 116
5.8 标准I/O的效率 117
5.9 二进制I/O 119
5.10 定位流 120
5.11 格式化I/O 121
5.12 实现细节 125
5.13 临时文件 127
5.14 标准I/O的替代软件 130
5.15 小结 130
习题 130
第6章 系统数据文件和信息 133
6.1 引言 133
6.2 口令文件 133
6.3 阴影口令 136
6.4 组文件 137
6.5 附加组ID 138
6.6 实现的区别 139
6.7 其他数据文件 139
6.8 登录账户记录 140
6.9 系统标识 141
6.10 时间和日期例程 142
6.11 小结 146
习题 146
第7章 进程环境 147
7.1 引言 147
7.2 main函数 147
7.3 进程终止 147
7.4 命令行参数 151
7.5 环境表 152
7.6 C程序的存储空间布局 152
7.7 共享库 154
7.8 存储器分配 154
7.9 环境变量 157
7.10 setjmp和longjmp函数 159
7.11 getrlimit和setrlimit函数 164
7.12 小结 168
习题 168
第8章 进程控制 171
8.1 引言 171
8.2 进程标识符 171
8.3 fork函数 172
8.4 vfork函数 176
8.5 exit函数 178
8.6 wait和waitpid函数 179
8.7 waitid函数 183
8.8 wait3和wait4函数 184
8.9 竞争条件 185
8.10 exec函数 188
8.11 更改用户ID和组ID 192
8.12 解释器文件 196
8.13 system函数 200
8.14 进程会计 203
8.15 用户标识 208
8.16 进程时间 208
8.17 小结 210
习题 211
第9章 进程关系 213
9.1 引言 213
9.2 终端登录 213
9.3 网络登录 216
9.4 进程组 218
9.5 会话 219
9.6 控制终端 220
9.7 tcgetpgrp、tcsetpgrp和tcgetsid函数 221
9.8 作业控制 222
9.9 shell执行程序 225
9.10 孤儿进程组 228
9.11 FreeBSD实现 230
9.12 小结 231
习题 232
第10章 信号 233
10.1 引言 233
10.2 信号概念 233
10.3 signal函数 240
10.4 不可靠的信号 242
10.5 中断的系统调用 244
10.6 可重入函数 246
10.7 SIGCLD语义 248
10.8 可靠信号术语和语义 250
10.9 kill和raise函数 251
10.10 alarm和pause函数 252
10.11 信号集 256
10.12 sigprocmask函数 258
10.13 sigpending函数 259
10.14 sigaction函数 261
10.15 sigsetjmp和siglongjmp函数 266
10.16 sigsuspend函数 268
10.17 abort函数 274
10.18 system函数 276
10.19 sleep函数 280
10.20 作业控制信号 282
10.21 其他特征 284
10.22 小结 285
习题 285
第11章 线程 287
11.1 引言 287
11.2 线程概念 287
11.3 线程标识 288
11.4 线程的创建 288
11.5 线程终止 291
11.6 线程同步 297
11.7 小结 311
习题 311
第12章 线程控制 313
12.1 引言 313
12.2 线程限制 313
12.3 线程属性 314
12.4 同步属性 318
12.5 重入 324
12.6 线程私有数据 328
12.7 取消选项 331
12.8 线程和信号 333
12.9 线程和fork 336
12.10 线程和I/O 339
12.11 小结 340
习题 340
第13章 守护进程 341
13.1 引言 341
13.2 守护进程的特征 341
13.3 编程规则 342
13.4 出错记录 345
13.5 单实例守护进程 348
13.6 守护进程的惯例 350
13.7 客户进程-服务器进程模型 354
13.8 小结 354
习题 354
第14章 高级I/O 355
14.1 引言 355
14.2 非阻塞I/O 355
14.3 记录锁 357
14.4 STREAMS 370
14.5 I/O多路转接 379
14.5.1 select和pselect函数 381
14.5.2 poll函数 384
14.6 异步I/O 386
14.6.1 系统V异步I/O 386
14.6.2 BSD异步I/O 387
14.7 readv和writev函数 387
14.8 readn和writen函数 389
14.9 存储映射I/O 390
14.10 小结 395
习题 396
第15章 进程间通信 397
15.1 引言 397
15.2 管道 398
15.3 popen和pclose函数 403
15.4 协同进程 408
15.5 FIFO 412
15.6 XSI IPC 415
15.6.1 标识符和键 415
15.6.2 权限结构 416
15.6.3 结构限制 417
15.6.4 优点和缺点 417
15.7 消息队列 418
15.8 信号量 422
15.9 共享存储 427
15.10 客户进程-服务器进程属性 432
15.11 小结 434
习题 434
第16章 网络IPC:套接字 437
16.1 引言 437
16.2 套接字描述符 437
16.3 寻址 439
16.3.1 字节序 440
16.3.2 地址格式 441
16.3.3 地址查询 442
16.3.4 将套接字与地址绑定 449
16.4 建立连接 450
16.5 数据传输 452
16.6 套接字选项 464
16.7 带外数据 466
16.8 非阻塞和异步I/O 467
16.9 小结 468
习题 468
第17章 高级进程间通信 469
17.1 引言 469
17.2 基于STREAMS的管道 469
17.2.1 命名的STREAMS管道 472
17.2.2 唯一连接 473
17.3 UNIX域套接字 476
17.3.1 命名UNIX域套接字 477
17.3.2 唯一连接 478
17.4 传送文件描述符 482
17.4.1 经由基于STREAMS的管道传送文件描述符 484
17.4.2 经由UNIX域套接字传送文件描述符 486
17.5 open服务器版本1 493
17.6 open服务器版本2 498
17.7 小结 505
习题 505
第18章 终端I/O 507
18.1 引言 507
18.2 综述 507
18.3 特殊输入字符 512
18.4 获得和设置终端属性 516
18.5 终端选项标志 516
18.6 stty命令 522
18.7 波特率函数 523
18.8 行控制函数 524
18.9 终端标识 524
18.10 规范模式 529
18.11 非规范模式 532
18.12 终端的窗口大小 537
18.13 termcap,terminfo和curses 539
18.14 小结 540
习题 540
第19章 伪终端 541
19.1 引言 541
19.2 概述 541
19.3 打开伪终端设备 544
19.3.1 基于STREAMS的伪终端 547
19.3.2 基于BSD的伪终端 549
19.3.3 基于Linux的伪终端 551
19.4 pty_fork函数 553
19.5 pty程序 555
19.6 使用pty程序 559
19.7 高级特性 564
19.8 小结 565
习题 565
第20章 数据库函数库 567
20.1 引言 567
20.2 历史 567
20.3 函数库 568
20.4 实现概述 569
20.5 集中式或非集中式 572
20.6 并发 574
20.7 构造函数库 574
20.8 源代码 575
20.9 性能 598
20.10 小结 600
习题 601
第21章 与网络打印机通信 603
21.1 引言 603
21.2 网络打印协议 603
21.3 超文本传输协议 605
21.4 打印假脱机技术 605
21.5 源代码 607
21.6 小结 644
习题 645
附录A 函数原型 647
附录B 其他源代码 677
附录C 部分习题答案 685
参考书目 709
索引 715
Qt遍历本地文件中的所有图片资源
在为数码相框所在文件系统实现U盘自动挂载之后,将U盘自动挂载在开发板上文件系统中的/mnt/usb目录,故还需为数码相框添加遍历/mnt/usb路径下的文件夹内图片文件,暂定为扫描指定目录下一层文件夹内的图片文件。
Linux命令大全
不同版本的Linux命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令,按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解Linux系统
QML学习实例
QML是一种描述语言,主要是对界面效果等的一种描述,它可以结合javaScript来进行更复杂的效果及逻辑实现。比如做个游戏,实现一些更有趣的功能等.
QML学习资料
QML是一种描述语言,主要是对界面效果等的一种描述,它可以结合javaScript来进行更复杂的效果及逻辑实现。比如做个游戏,实现一些更有趣的功能等.