原创 (P20)socket編程(十五)

文章目錄1.UDP聊天室的實現 1.UDP聊天室的實現 C2S_LOGIN:客戶端向服務端發送的登錄消息 S2C_LOGIN_OK:服務端到客戶端的相應 S2C_ALREADY_LOGINED:用戶已經登錄樂了,響應登陸失敗 S2

原创 Linux內核的組成部分

文章目錄1.進程、進程切換、調度2.UNIX進程3.地址空間與特權級別4.頁表5.物理內存的分配6.系統調用7.設備驅動程序、塊設備和字符設備8.網絡9.文件系統10.模塊和熱拔插11.緩存12.鏈表處理13.對象管理和引用計數1

原创 線程棧和進程棧

文章目錄1.線程棧和進程棧的區別2.線程堆棧大小3.獲取Linux 內存頁大小的命令4.棧空間和堆空間 1.線程棧和進程棧的區別 線程棧在linux下默認是8M大小,通過mmap開闢線程棧,線程棧的起始地址跟大小保存在pthre

原创 (P18)socket編程(十三)

文章目錄1.select vs poll2.epoll使用3.epoll與select、poll的區別4.epoll模式:EPOLLLT,EPOLLET 1.select vs poll select限制 (1)一個進程能打開的

原创 (P17)socket編程(十二)

文章目錄1.select限制2.poll:與select差不多 1.select限制 用select實現的併發服務器,能達到的併發數,受到2個方面的限制 (1)一個進程能打開的最大文件描述符的限制。這個可以通過調整內核參數實現

原创 (P19)socket編程(十四)

文章目錄 不需要經過三次握手 TCP是基於流的傳輸服務,消息之間沒有邊界,UDP數據包之間有邊界 數據包丟失,重複,亂序,以及缺乏流控 紅色豎線:表示客戶端和服務端的邊界 16:28

原创 shell腳本文件鎖——避免腳本重複執行

文章目錄1.在shell中實現文件鎖的兩種方式2.使用flock命令3.Linux shell文件鎖 1.在shell中實現文件鎖的兩種方式 方法一:利用普通文件 (1)在腳本啓動時檢查特定文件是否存在,如果存在,則等待一段時

原创 Docker爲什麼選擇了AUFS?

文章目錄1.AUFS2.但是每個 FS層都是 readonly權限,那麼容器內部如何向這些文件寫入數據呢? 1.AUFS AUFS本質上仍是堆棧式的聯合文件系統 從功能上講,AUFS可以將分佈在不同地方的目錄掛載到同一個虛擬文件

原创 (P16)socket編程(十一)

文章目錄1.套接字I/O超時設置方法2.用select實現超時 1.套接字I/O超時設置方法 alarm 因爲該鬧鐘可能會被其它使用,所以一般不使用鬧鐘來實現超時 SIGALRM void handle(int sig) {

原创 (P2)Linux開發工具——gcc入門下

文章目錄1.使用外部庫2.靜態庫與共享庫3.生成靜態庫4.生成動態庫 1.使用外部庫 2.靜態庫與共享庫 3.生成靜態庫 4.生成動態庫

原创 (P1)Linux開發工具——gcc入門上

文章目錄1.什麼是gcc2.gcc特點3.gcc編譯過程4.gcc常用選項5.gcc編譯多文件 1.什麼是gcc gcc(GUN C Compile)編譯器的作者是Richard Stallman,也是GNU項目的奠基者 什麼是

原创 (P5)Linux開發工具——gdb入門下

文章目錄1.查看運行時的數據2.程序錯誤3.gdb調試邏輯錯誤4.gdb調試段錯誤5.core文件調試 1.查看運行時的數據 print 查看變量值 ptype 查看類型 print array 查看數組,查看數組,是查看的是靜

原创 (P15)socket編程(十)

文章目錄1.close與shutdown2.進一步改進回射客戶程序 1.close與shutdown close終止了數據傳送的兩個方向 shutdown可以有選擇的終止某個方向的數據傳送或者終止數據傳送的2個方向 shutdo

原创 (P3)Linux開發工具—Makefle上

文章目錄1.make與Makefile介紹2.Makefile基本規則3.簡單的Makefile編寫4.Make自動化變量5.Makefile編譯多個可執行文件 1.make與Makefile介紹 make工具 利用make工具

原创 (P5)Linux開發工具——gdb入門上

文章目錄1.什麼是gdb2.gdb功能3.運行程序4.查看源碼5.設置斷點與觀察點5.單步調試6.gdb常用命令總結 1.什麼是gdb 什麼是gdb gdb是GNU debugger的縮寫,是程序的調試工具 2.gdb功能