序言:

搞编程,学 C/C++ 怎么不能学习一下 Linux ? 了解一下底层的知识库和程序运行原理?附上个人学习目录,此系列学完之后,回来预期会继续更新 Qt 相关的知识 QtExamples ,将更多的一些知识分享出来。

Linux 系统学习三部曲:❶基础编程 ❷系统编程 ❸网络编程


说明:

Linux / Unix Example:文章中的所有例子均在 MacOS && UOS 上面编译和运行成功。


环境:

💻: MacOS 10.14.6 📎 gcc/g++ 9.2.0 📎 gdb 8.3

💻: UOS20 (Debian8+) 📎 gcc/g++ 8.3.0 📎 gdb 8.0


目录:

服务器开发之 Linux 基础编程:

gcc/g++:
  • 在MacOS上面通过brew命令安装gcc编译器集
  • gcc和g++的区别,编译.c和.cpp文件的区别
  • gcc工作流程:预处理,编译,汇编,链接
  • Linux下使用gcc生成静态库.a和调用(图文并茂,坑已踩完)
  • Linux下使用gcc生成动态库.so和调用(图文并茂,坑已踩完)
  • 在Linux中,编写入门的makefile文件,然后逐渐迭代

gdb:
  • 在MacOS10.14.6安装最新gdb8.3的详细教程,含可能遇到的所有坑(网上最新教程)
  • gdb调试器的使用,初探全貌

程序运行原理,文件描述符,PCB:
  • Linux中文件操作,软硬链接ln,用户权限chmod、chown,文件查找和检索find、grep,压缩gz,bz2
  • Linux中虚拟地址空间、pcb、文件描述符、C库函数工作流程、标准库和系统库函数区别
  • Linux中man手册,阻塞和非阻塞,stat,文件操作和遍历,文件描述符复制dup()

服务器开发之 Linux 系统编程:

进程间通信:
  • Linux中fork创建兄弟子进程,验证进程之间全局变量不共享,exec函数族
  • Linux中孤儿进程,僵尸进程,进程回收wait、waitpid函数
  • 父子进程、兄弟子进程之间通信方式–匿名管道pipe(适用于有血缘关系的进程)
  • Linux中普通的进程间通信方式–有名管道fifo(适用于无血缘关系的进程)
  • Linux中进程间的通信方式–内存映射区mmap()

信号和守护进程:
  • Linux中系统信号初识,和函数kill,raise,abort,alarm,setitimer
  • Linux中未决信号集和阻塞信号集的状态关系sigaddset,以及捕捉信号函数
  • Linux中创建守护进程setsid()

多线程:
  • Linux中创建多线程实例pthread_create()
  • Linux中多线程操作函数pthread_exit()、pthread_jion()、pthread_detach()、pthread_cancel()
  • Linux中使用使用互斥量(锁)Mutex来操持多线程同步执行pthread_mutex_lock()
  • Linux中原子操作,死锁原因以及解决方法,读写锁的属性和函数使用pthread_rwlock_wrlock()
  • Linux中多线程使用条件变量阻塞线程,和pthread_cond_wait()函数使用
  • Linux中多线程使用信号量(信号灯),和sem_wait()函数使用

服务器开发之 Linux 网络编程:

感觉基础的网络理论基础知识已会,写过一些实战项目的代码,可以参考 QtExamples 第十章部分

后面深入底层网络完成,有空再整理文章,

待续…


我所想说:🙋‍♀️

虽然不盈利,会累,但因自由和开源软件而写的开心ya, 鸭鸭;

但 github 上,你的 star 和 fork 是我最大鼓励,也是我一直持续写下去的动力…

由于会经常更新新的文章,所以暂时先使用这一份目录更新:https://github/xmuli/linuxExample
更新时间: 2020-05-18

更多推荐

Linux 该如何自我系统的学习「心路」?