01
Makefile入门
什么是Makefile,为什么需要Makefile,基本规则与工作原理
基础概念
02
Makefile语法基础
目标、依赖与命令写法,Tab与空格区别,注释用法
语法规则
03
Makefile变量
变量定义与引用,自动变量($@,$^,$<),赋值方式(=,:=,?=,+=)
变量赋值
04
模式规则与静态模式
%通配符,静态模式规则写法,常见应用场景
模式通配
05
Makefile条件判断
ifeq, ifneq, ifdef, ifndef用法,项目中的应用
条件逻辑
06
Makefile函数
字符串处理(patsubst,subst,strip),文件名函数,foreach,call,shell
函数字符串
07
文件包含与嵌套
include指令,多目录项目Makefile组织方式
组织模块
08
Makefile实战
C项目完整Makefile编写,自动生成依赖,伪目标
实战项目
09
系统编程入门
什么是系统编程,用户态与内核态,系统调用与库函数区别
概念内核
10
文件I/O基础
文件描述符,open/close/read/write,与标准C库对比
I/O系统调用
11
文件I/O进阶
lseek随机读写,dup/dup2重定向,fcntl高级用法
重定向随机
12
文件系统与目录操作
stat/lstat获取信息,目录遍历(opendir/readdir),文件类型与权限
目录权限
13
进程概念
进程与程序区别,PID,进程状态与生命周期,fork系统调用
进程fork
14
进程创建与控制
fork写时拷贝,vfork与clone区别,wait/waitpid回收子进程
创建回收
15
进程间通信(IPC)概述
IPC方式:管道、消息队列、共享内存、信号量、Socket,选择依据
IPC通信
16
管道通信
匿名管道创建与使用,读写规则与阻塞,命名管道(FIFO)
管道FIFO
17
信号机制
信号分类与默认行为,signal/sigaction,kill/raise发送
信号异步
18
共享内存
System V共享内存(shmget/shmat/shmdt),与mmap对比
共享内存mmap
19
消息队列
System V消息队列(msgget/msgsnd/msgrcv),消息类型与优先级
消息队列优先级
20
信号量
System V信号量实现同步互斥,PV操作原理解析
信号量PV
21
多线程基础
线程与进程区别,POSIX线程库(pthread),创建与退出
线程pthread
22
线程同步
互斥锁(mutex),死锁避免,条件变量实现生产者消费者
同步条件变量
23
线程同步进阶
读写锁(rwlock),自旋锁与互斥锁对比,屏障(barrier)
读写锁自旋锁
24
网络编程基础
TCP/IP协议栈简介,Socket编程模型,客户端/服务器架构
网络Socket
25
TCP Socket编程
socket/bind/listen/accept/connect,三次握手与四次挥手
TCP连接
26
UDP Socket编程
UDP特点与适用场景,sendto/recvfrom,与TCP对比
UDP无连接
27
高级I/O复用
select/poll/epoll原理与对比,LT/ET模式,Reactor模式
I/O复用epoll
28
信号驱动I/O与异步I/O
信号驱动I/O(SIGIO),POSIX异步I/O(AIO),与I/O复用对比
异步AIO
29
系统编程调试与优化
gdb调试多进程/线程,strace跟踪系统调用,perf/gprof分析
调试性能
30
综合实战:简易Web服务器
结合Makefile、多线程、Socket、I/O复用技术实现
实战Web服务器