原创 Linux下項目開發工具(gcc,makefile,git)

GCC編譯器 簡介 GCC(GNU Compiler Collection,GNU編譯器套件// GUN is Not Unix),是由 GNU 開發的編程語言編譯器。它是以GPL許可證所發行的自由軟件,也是 GNU計劃的關鍵部分

原创 Linux下的shell腳本編程(一)

Shell簡介 Shell基本上是一個命令解釋器,類似於DOS下的command。它接收用戶命令(如ls等),然後調用相應的應用程序。shell提供了你與操作系統之間通訊的方式。這種通訊可以以交互方式(從鍵盤輸入,並且可以立即得到

原创 C語言複習0.1

C語言複習0.1 C程序編譯步驟 預處理:宏定義展開、頭文件展開、條件編譯等,同時將代碼中的註釋刪除,這裏並不會檢查語法 gcc -E hello.c -o hello.i 編譯:檢查語法,將預處理後文件編譯生成彙編文件

原创 Linux 文件系統(部分)

Linux 文件系統 struct stat: 文件屬性 解釋 dev_t st_dev 設備號 ino_t st_ino inode 編號 mode_t st_mode 訪問權限相關 nlink_t st

原创 Linux 線程簡析

線程概念 LWP:light weight process 輕量級的進程,本質仍是進程(在Linux環境下) 進程:獨立地址空間,擁有PCB 線程:也有PCB,但沒有獨立的地址空間(共享) 區別:在於是否共享地址空間。 獨居(

原创 MMAP簡單介紹

mmap函數 void *mmap(void *adrr, size_t length, int prot, int flags, int fd, off_t offset); 參數 addr: 建立映射區的首地址,由Li

原创 HTTP協議

HTTP通信模型 特點 支持客戶/服務器模式 簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑 靈活:HTTP允許傳輸任意類型的數據對象 無連接:每次連接只處理一個請求,服務器處理完客戶的請求並收到客戶的應答後即斷開連

原创 Linux UDP套接字編程

概述 相較於TCP而言,UDP通信的形式更像是發短信。不需要在數據傳輸之前建立、維護連接。只專心獲取數據就好。省去了三次握手的過程,通信速度可以大大提高,但與之伴隨的通信的穩定性和正確率便得不到保證。因此,我們稱UDP爲“無連接的

原创 select多路IO複用服務器

select函數 select函數在之前高級IO中有提過。 該函數允許進程指示內核等待多個時間中的任何一個發生,並只在有一個或多個時間發生或經歷一段指定的時間後才喚醒它,也就是說我們調用select告知內核對那些描述符感興趣以及

原创 Linux 高級IO

非阻塞I/O 系統調用有兩類,“低速”系統調用和其他,而低速系統調用可能使進程永遠阻塞,例如讀某些終端設備文件,文件中並沒有數據,讀操作可能使調用者永遠阻塞。 非阻塞I/O使我們可以的一些操作不會永遠的阻塞,如果操作繼續執行將會進

原创 Linux shmget/shmat/shmctl共享內存

標識符和鍵 每個內核中的IPC結構都用一個非負整數的標識符加以引用。無論何時創建IPC結構,都應指定一個鍵。這個鍵的數據類型是基本系統數據類型key_t,通常在頭文件< sys/types.h >中被定義爲長整型。這個鍵由內核變換

原创 Linux 守護進程Daemon

前言 守護進程是生存期長的一種進程。 Linux常用於服務器,程序通常不運行在前臺。運行於前臺的進程和終端關聯,一旦終端關閉,進程也隨之退出。因爲守護進程不和終端關聯,因此它的標準輸出和標準輸入也無法工作,調試信息應該寫入到普通

原创 JSON簡單介紹

JSON JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming Language, Sta

原创 Linux標準I/O之緩衝

緩衝 標準I/O庫提供緩衝的目的是儘可能地減少使用read和write調用的次數。他也對每個I/O流自動地進行緩衝管理,從而避免了應用程序需要考慮這一點所帶來的麻煩。不幸的是,標準I/O庫最令人迷惑的也是他的緩衝。 標準I/O提供

原创 Linux signal信號

信號 信號的機制: A給B發送信號,B收到信號之前執行自己的代碼,收到信號後,不管執行到程序的什麼位置,都要暫停運行,去處理信號,處理完畢再繼續執行。與硬件中斷類似——異步模式。但信號是軟件層面上實現的中斷,早期常被稱爲“軟中斷