Skip to content

库函数

C 标准函数

Glib

Glib 是由 GNU 书写的 C 语言通用跨平台库,广泛应用于 C 语言程序中。它提供 C 标准库所没有的很多上层 API 封装,简化了 C 语言的开发和使用,包括:内存管理、字符串处理、常用数据结构、文件管理、锁机制等。

用户态常用第三方库

  1. 网络相关

    • libcurl:HTTP 客户端库
    • OpenSSL:加密和安全通信
    • libevent:事件驱动网络库
    • libuv:跨平台异步 I/O 库
  2. 数据处理

    • SQLite:轻量级数据库
    • zlib:数据压缩
    • libxml2:XML 处理
    • jansson:JSON 处理
  3. 多媒体

    • FFmpeg:音视频处理
    • libpng:PNG 图像处理

Klib (Linux Kernel Library)

Linux 下的程序编译环境默认包含 /usr/include 文件夹下的头文件:

  • /usr/include/linux:用于编译和开发内核模块
  • /usr/include/sys:提供与 Linux 系统强相关的函数库

系统调用机制:

  • 用户态程序通过包含 sys/xxx.h 进行系统调用
  • 通过 sys/ioctl.h 提供的文件操作接口与内核模块交互
  • 系统调用函数在进程实例化时由系统自动加载到内核空间

代码实践

函数设计原则

  1. 函数纯洁性

    • C 程序对 I/O 操作有容忍性
    • 多数函数允许使用 I/O 操作
  2. 参数传递

    • 推崇"改参函数"模式
    • 函数返回值通常为 int 类型,表示操作是否成功
    • 实际结果通过参数中的指针返回
    • 内存分配由用户决定(栈或堆)
  3. 内存管理

    • 动态内存分配需要传递指针的指针
    • 函数通过参数返回动态分配的内存
  4. 编程规范

    • 减少全局状态引用
    • 检查所有返回 int 结果的函数
    • 验证所有接收指针的参数的合法性

开发环境

  • 使用 QEMU 模拟器进行跨平台硬件模拟
  • 支持不同架构下的内核开发和调试