序言:
搞編程,學 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:
程序運行原理,文件描述符,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()
持續更新中…
編程很苦,也很甜~
我所想說:🙋♀️
雖然不盈利,會累,但因自由和開源軟件而寫的開心ya, 鴨鴨;
但 github 上,你的 star 和 fork 是我最大鼓勵,也是我一直持續寫下去的動力…
由於會經常更新新的文章,所以暫時先使用這一份目錄更新:https://github.com/xmuli/linuxExample
更新時間: 2020-04-29