库函数
C 标准函数
Glib
Glib 是由 GNU 书写的 C 语言通用跨平台库,广泛应用于 C 语言程序中。它提供 C 标准库所没有的很多上层 API 封装,简化了 C 语言的开发和使用,包括:内存管理、字符串处理、常用数据结构、文件管理、锁机制等。
用户态常用第三方库
网络相关
- libcurl:HTTP 客户端库
- OpenSSL:加密和安全通信
- libevent:事件驱动网络库
- libuv:跨平台异步 I/O 库
数据处理
- SQLite:轻量级数据库
- zlib:数据压缩
- libxml2:XML 处理
- jansson:JSON 处理
多媒体
- FFmpeg:音视频处理
- libpng:PNG 图像处理
Klib (Linux Kernel Library)
Linux 下的程序编译环境默认包含 /usr/include
文件夹下的头文件:
/usr/include/linux
:用于编译和开发内核模块/usr/include/sys
:提供与 Linux 系统强相关的函数库
系统调用机制:
- 用户态程序通过包含
sys/xxx.h
进行系统调用 - 通过
sys/ioctl.h
提供的文件操作接口与内核模块交互 - 系统调用函数在进程实例化时由系统自动加载到内核空间
代码实践
函数设计原则
函数纯洁性
- C 程序对 I/O 操作有容忍性
- 多数函数允许使用 I/O 操作
参数传递
- 推崇"改参函数"模式
- 函数返回值通常为 int 类型,表示操作是否成功
- 实际结果通过参数中的指针返回
- 内存分配由用户决定(栈或堆)
内存管理
- 动态内存分配需要传递指针的指针
- 函数通过参数返回动态分配的内存
编程规范
- 减少全局状态引用
- 检查所有返回 int 结果的函数
- 验证所有接收指针的参数的合法性
开发环境
- 使用 QEMU 模拟器进行跨平台硬件模拟
- 支持不同架构下的内核开发和调试