[置顶] 0-linux 编程学习笔记导航

时间:2020-12-21 04:44:05

学习交流群:

Linux 环境编程 610441700

  • 说明:本系列文章并不能取代 《APUE》这本旷世之作,文章中难免有错误与不足之处,希望读者们遇到有疑问的地方可以加群互相交流,共同进步。写这一系列文章的目的有三个:一是为了提升自己对 Linux 的理解,二是锻炼自己能够把知识点讲清楚,三是希望能更好的帮助基础薄弱的同学能够在学习 APUE。

  • Linux 编程的内容非常多, 《APUE》这本书是入门 Linux 编程的基础,虽然它讲的是 Unix 环境编程,但是对于 Linux 来说,大部分都是适用的。读者千万不能试图在一周、一个月或两个月时间内读它读透,总之切记——勿在浮沙筑高台

  • 关于博客中的程序。博客中使用大量的代码作为示例讲解,有时候为了能突出重点,删除了很多无关的条件判断,错误处理等过程。如果你想采用这些代码,务必自行扩充代码,让你的程序更加健壮。典型的比如你可能会见到申请内存不释放,有些函数可能会返回失败等等,你都需要自行去扩充。

  • 致谢:感谢网友 @song, @FadeTrack, @忧郁的排骨, @quot, @DataCow 等的热心支持,帮忙纠正了博客中的错误,再次感谢!

一、基础

001 gcc常用选项
002 静态库的创建与使用
003 共享库的创建与使用

二、文件IO

004 文件IO-从printf开始
005 文件IO-read/write/open
006 文件IO-文件描述符与lseek
007 文件IO-阻塞与非阻塞IO
008 文件IO-fcntl函数

三、文件与目录

009 文件系统初探
010 ext2 文件系统
011 ext2 文件系统实验
012 stat 函数
013 stat 结构体 st_mode 字段
014 stat 结构体中的三个时间
015 linux 中的时间
016 st_mode 与 chmod 函数
017 chown 函数
018 utime 函数
019 文件截断与 truncate 函数
020 硬链接与软链接
021 link系列的函数
022 与目录有关的函数-chdir 与 getcwd
023 与目录有关的函数-mkdir 与 rmdir
024 与目录有关的函数-读取目录
025 文件与目录总结

四、进程基础

026 感受进程
027 fork 函数与分身术
028 进程空间与 fork 函数原理
029 fork 函数与文件共享
030 换个姿势执行 ls 命令
031 wait 大战僵尸
032 wait大变身之waitpid

五、信号

033 Hello signal
034 招待你的“客人”
035 标准信号及其不可靠性
036 可重入函数
037 使用 kill 函数发送信号
038 启动定时炸弹 alarm
039 装信号的容器 sigset
040 阻塞信号与未决信号
041 新的信号注册函数 sigaction
042 带参数的信号
043 打通你的任督二脉-信号处理函数的执行期
044 中断系统调用与自动重启动
045 超越 goto 的跳转 longjmp
046 打造自己的 longjmp
047 跳出信号处理函数
048 信号大结局

六、进程间通信

049 进程通信初步
050 进程间通信总览
051 无名管道
052 有名管道
053 System V 共享内存初体验
054 System V IPC 内核对象
055 键值与 ftok
056 System V 共享内存-shmat 与 shmdt
057 System V 共享内存-shmctl
058 System V 消息队列
059 System V 信号量(简介)
060 System V 信号量(操作)
061 System V 信号量(生产者与消费者模型)
062 进程间通信小结(待更新)

七、进程间关系

063 进程扇与进程链
064 进程组
065 进程组(实验一)
066 进程组(实验二)
067 会话
068 会话(创建会话)
069 控制终端、前台进程组与后台进程组
070 设置前台进程组
071 后台进程组与控制终端
072 孤儿进程与孤儿进程组
073 守护进程(概念)
074 守护进程(实现)

八、线程基础

075 线程初识
076 线程概念
077 线程创建与终止
078 线程清理函数
079 多线程雷区

九、线程互斥与同步

080 多线程互斥与同步
081 互斥量 mutex
082 读写锁 rwlock
083 自己实现互斥锁
084 自旋锁 spinlock
085 线程同步
086 条件变量 condition
087 深入条件变量
088 屏障 barrier

十、线程控制

089 线程属性
090 互斥量的共享属性
091 互斥量的鲁棒属性
092 递归型互斥量
093 其它同步对象的属性
094 可重入函数(二)
095 errno 变量与多线程
096 只被执行一次的函数
097 线程私有变量
098 模拟 errno
099 再议 pthread_cancel
100 多线程与信号
101 多线程与信号(sigwait)
102 多线程与 fork
103 atfork 与 fork

十一、高级 IO-记录锁

104 记录锁(概念)
105 记录锁(基础)
106 记录锁(测试命令)
107 记录锁(底层实现)
108 记录锁(继承与释放)
109 记录锁(尾部加锁)
110 建议性锁和强制性锁
111 单例守护进程

十二、高级IO-多路复用

112 IO 多路复用
113 新的容器-fd_set
114 select(基础)
115 select 与信号
116 poll 函数
117 epoll(基础)
118 epoll (函数)
119 epoll(触发模式)
120 epoll(边沿模式)

十三、高级IO-异步IO

121 同步 IO 与异步 IO
122 POSIX 异步IO(aiocb)
123 POSIX 异步IO(异步操作状态)
124 POSIX 异步IO(等待异步IO操作)
125 POSIX 异步IO(取消操作)
126 POSIX 异步IO(批量请求)
127 POSIX 异步IO(异步通知)

十四、网络编程基础

128 字节序
129 IPv4 地址
130 IP 地址和端口号
131 安装“插座”
132 发起连接请求
133 接受连接
134 开始通信
135 大写转换服务器
136 基于 UDP 协议的通信

待更新……