Linux系统编程围绕Linux操作系统的三大抽象展开讲解(文件、虚拟存储、进程)。并配合一个小型的Shell程序minishell做为教学项目。
Linux系统编程之文件篇
Linux系统编程之进程篇
Linux系统编程之信号与管道篇
Linux系统编程之时间篇
Linux系统编程之实战篇(minishell实现)
第一部分:Linux系统编程之文件篇:
01认识计算机系统(上)
02认识计算机系统(下)
03系统编程介绍
04文件与I/O(1)
05文件与I/O(2)
06文件与I/O(3)
07文件与I/O(4)
08文件与I/O(5)
01认识计算机系统(上)
计算机系统组成
计算机系统硬件组成
总线
I/O设备
内存
处理器(运算器+控制器)
02认识计算机系统(下)
什么是操作系统
Linux内核模块
操作系统管理硬件
操作系统三个基本抽象
进程上下文切换
进程虚地址空间
虚拟文件系统(VFS)
03系统编程介绍
系统编程与应用编程
系统资源
系统调用
系统调用与C库关系
错误处理
04文件与I/O(1)
什么是I/O
文件描述符
文件相关系统调用
05文件与I/O(2)
read、write
lseek
目录访问(opendir、readdir、closedir)
06文件与I/O(3)
stat
stat结构体
stat示例
07文件与I/O(4)
文件共享
打开文件内核数据结构
一个进程两次打开同一个文件
两个进程打开同一个文件
复制文件描述符(dup、dup2、fcntl)
08文件与I/O(5)
fcntl函数
fcntl常用操作
文件锁
第二部分:Linux系统编程之进程篇:
这一系列共7集
09进程(1)
10进程(2)
11进程(3)
12进程(4)
13进程(5)
14进程(6)
15进程(7)
09进程(1)
什么是程序
什么是进程
进程数据结构
进程与程序区别与联系
10进程(2)
进程状态变迁
进程控制块
进程创建
进程撤消
终止进程的五种方法
11进程(3)
复制进程映像
fork系统调用
孤儿进程、僵尸进程
写时复制
12进程(4)
fork之后父子进程共享文件
fork与vfork
exit与_exit
atexit
execve替换进程映像(加载程序)
13进程(5)
exec替换进程映像
exec关联函数组(execl、execlp、execle、execv、execvp)
14进程(6)
SIGCHLD
wait
waitpid
僵进程
system
15进程(7)
什么是守护进程
守护进程的创建步骤
daemon
第三部分:Linux系统编程之信号与管道篇
16信号(一)
17信号(二)
18信号(三)
19信号(四)
20信号(五)
21信号(六)
22信号(七)
23管道(一)
24管道(二)
25管道(三)
16信号(一)
中断
信号
信号与中断
signal
17信号(二)
信号分类
可靠信号与不可靠信号
信号发送
pause
18信号(三)
更多信号发送函数
可重入函数与不可重入函数
不可重入函数示例
19信号(四)
信号在内核中的表示
信号阻塞与未诀
信号集操作函数
sigprocmask
20信号(五)
sigaction函数
sigaction结构体
sigaction示例
21信号(六)
sigqueue函数
sigval联合体
sigqueue示例
22信号(七)
三种不同精度的睡眠
三种时间结构
setitimer
getitimer
23管道(一)
管道
匿名管道pipe
管道示例程序
24管道(二)
管道读写规则
25管道(三)
命名管道(FIFO)
匿名管道与命名管道区别
命名管道的打开规则
命名管道示例程序
第五部分:Linux系统编程之实战篇(minishell实现)
第一讲:
搭建minishell程序框架
编写Makefile
第二讲:
对简单命令进行解析并执行
第三讲:
搭建复杂命令解析框架
解析输入重定向、输出重定向、管道、后台作业
第四讲:
解析复杂命令
解析输入重定向、输出重定向、管道、后台作业
第五讲:
解析并执行带管道的命令
第六讲:
解析并通执行带输入输出重定向命令,后台作业
第七讲:
梳理程序框架
调试几个BUG
第八讲
内部命令的实现
搭建内部命令的实现框架