0-linux 環境編程修煉指南——外功心法

學習交流羣:

Linux 環境編程 610441700


  • 說明:本系列文章並不能取代 《APUE》這本曠世之作,文章中難免有錯誤與不足之處,希望讀者們遇到有疑問的地方可以加羣互相交流,共同進步。寫這一系列文章的目的有三個:一是爲了提升自己對 Linux 的理解,二是鍛鍊自己能夠把知識點講清楚,三是希望能更好的幫助基礎薄弱的同學能夠在學習 APUE。建議學習時間:大於 3 個月

  • 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 協議的通信

<已完結>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章