LinuxC编程一站式学习(宋劲杉,北京亚嵌敎育硏究中心)

书: https://pan.baidu.com/s/1o53U8DJYBlzPKes4X47C8Q?pwd=ymj8
笔记如下:

  1. “Linux下C编程的首要工具链:GCC编译器(gcc)、GDB调试器(gdb)和Make构建工具。”
  2. “指针是C语言的灵魂,理解指针+内存模型是突破初级的关键。”
  3. main(int argc, char *argv[])的参数argc表示命令行参数个数,argv存储参数字符串数组。”
  4. “头文件(.h)声明接口,源文件(.c)实现逻辑,通过#include实现分离编译。”
  5. “静态库(.a)与动态库(.so)的区别:前者编译时链接,后者运行时加载。”
  6. Makefile的核心规则:target: dependencies → command,变量简化重复路径。”
  7. “文件描述符(File Descriptor)是Unix一切皆文件的体现,0/1/2对应标准输入/输出/错误。”
  8. “系统调用(如open()read())是用户态与内核态的桥梁,执行时触发软中断(int 0x80)。”
  9. “进程创建通过fork()实现,子进程复制父进程的地址空间,exec()系列函数加载新程序。”
  10. “信号(Signal)是异步事件通知机制,SIGKILL(强制终止)和SIGTERM(优雅退出)需区分处理。”
  11. “管道(pipe)实现进程间通信,匿名管道限于父子进程,命名管道(mkfifo)可跨无关进程。”
  12. mmap()将文件映射到内存,避免频繁read/write,提升I/O效率。”
  13. “多线程需关注线程安全(Thread Safety),互斥锁(pthread_mutex_t)保护临界区。”
  14. volatile关键字防止编译器优化对硬件寄存器的读写,常用于嵌入式开发。”
  15. “内存泄漏检测工具valgrind可定位未释放的堆内存(malloc/free不匹配)。”
  16. errno全局变量存储系统调用错误码,perror()strerror()将其转为可读信息。”
  17. getopt()函数解析命令行选项,支持短选项(如-h)和长选项(如--help)。”
  18. select()/poll()实现I/O多路复用,高并发场景下比多线程更轻量。”
  19. setjmp()longjmp()实现非局部跳转,模拟异常处理机制。”
  20. “掌握strace跟踪系统调用、ltrace跟踪库函数调用,快速诊断程序行为。”

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注