linux下c編程pdf
4。守護進程的創建
如果你在DOS時代編寫過程序,那麼你也許知道在DOS下為了編寫一個常駐內存的程序我們要編寫多少代碼了.相反如果在Linux下編寫一個"常駐內存"的程序卻是很容易的.我們只要幾行代碼就可以做到. 實際上由於Linux是多任務操作系統,我們就是不編寫代碼也可以把一個程序放到後台去執行的.我們只要在命令後面加上&符號SHELL就會把我們的程序放到後台去運行的. 這里我們"開發"一個後台檢查郵件的程序.這個程序每個一個指定的時間回去檢查我們的郵箱,如果發現我們有郵件了,會不斷的報警(通過機箱上的小喇叭來發出聲音). 後面有這個函數的加強版本加強版本
後台進程的創建思想: 首先父進程創建一個子進程.然後子進程殺死父進程(是不是很無情?). 信號處理所有的工作由子進程來處理.
#include
#include
#include
#include
#include
#include
#include
/* Linux 的默任個人的郵箱地址是 /var/spool/mail/用戶的登錄名 */
#define MAIL "/var/spool/mail/hoyt"
/* 睡眠10秒鍾 */
#define SLEEP_TIME 10
main(void)
{
pid_t child;
if((child=fork())==-1)
{
printf("Fork Error:%s\n",strerror(errno));
exit(1);
}
else if(child>0)
while(1);
if(kill(getppid(),SIGTERM)==-1)
{
printf("Kill Parent Error:%s\n",strerror(errno));
exit(1);
}
{
int mailfd;
while(1)
{
if((mailfd=open(MAIL,O_RDONLY))!=-1)
{
fprintf(stderr,"%s","\007");
close(mailfd);
}
sleep(SLEEP_TIME);
}
}
}
你可以在默認的路徑下創建你的郵箱文件,然後測試一下這個程序.當然這個程序還有很多地方要改善的.我們後面會對這個小程序改善的,再看我的改善之前你可以嘗試自己改善一下.比如讓用戶指定郵相的路徑和睡眠時間等等.相信自己可以做到的.動手吧,勇敢的探險者.
好了進程一節的內容我們就先學到這里了.進程是一個非常重要的概念,許多的程序都會用子進程.創建一個子進程是每一個程序員的基本要求!
❷ 正點原子嵌入式linux驅動開發——Linux C編程入門
這一章主要利用Ubuntu自帶的vi編輯器進行C語言代碼編寫。對原理不感興趣的讀者,可以自行搜索並使用VSCode等編輯器進行操作。
首先,創建一個名為"C_Program"的文件夾,用於管理所有代碼。每次編寫的代碼放在"C_Program"文件夾下的子文件夾中,便於管理。
在"/etc/vim/vimrc"文件中,設置tab為4個空格,並啟用行號顯示,通過在文件最後兩行添加相應的代碼實現。
設置完成後的vi編輯器,用於編寫經典代碼"Hello World!"。創建名為"main.c"的文件,內容如下:
使用"cat"命令查看內容,如圖所示。
進行代碼編譯。Ubuntu下的C語言編譯器為GCC,若Ubuntu18未安裝GCC工具,需手動安裝gcc、g++和make等工具。通過安裝"build-essential"軟體包即可。安裝完成後,使用命令查看,如圖所示。
安裝成功後,GCC編譯器版本為7.5.0,適用於x86架構CPU。對於ARM架構,需要使用針對ARM的GCC編譯器,即交叉編譯器。需記住不同架構下的GCC編譯器不同。
使用GCC編譯器編譯"main.c"文件,GCC命令模式下輸入命令,編譯完成後生成可執行文件"a.out",使用命令"./a.out"執行,如圖所示。
可自定義命名生成的可執行文件,在使用gcc命令時加上"-o"指定文件名,如編譯"main.c"後生成名為"main"的可執行文件,操作如圖所示。
GCC編譯器命令格式如下,主要選項如下:
編寫示例代碼演示GCC錯誤警告,代碼中有兩處錯誤:在第8行少寫了一個分號;第9行中的printf語句錯誤。編譯後,GCC會給出錯誤提示,根據提示修改代碼即可。
GCC編譯流程包括預處理、編譯、匯編和鏈接,預處理展開頭文件、替換宏、解析條件編譯;編譯將預處理後的代碼編譯成匯編代碼;匯編將匯編語言編譯成二進制目標文件;鏈接將多個目標文件鏈接成可執行文件。
使用make命令進行編譯,通過一個Makefile文件描述編譯哪些源碼文件、如何編譯。Makefile跟腳本文件類似,執行系統命令,使用make命令即可自動完成工程編譯,提高開發效率。在Linux下使用最多的GCC編譯器,需要自行編寫Makefile。
創建名為"Makefile"的文件,描述工程中需要編譯的源碼文件和依賴關系。在命令行輸入"make"即可編譯工程,可能遇到編譯失敗的情況。修改Makefile,確保在修改文件後能正確編譯。Makefile中規則描述目標文件及其依賴文件,命令執行更新。
總結,Makefile中規則定義目標文件及其依賴文件,命令執行更新。Makefile的"終極目標"是Makefile文件中第一個規則的目標,沒有指定目標時,默認為目標。Makefile變數用於簡化代碼,變數賦值使用"="或"==","=="只使用已定義的值。模式規則用於編譯所有以特定後綴結尾的文件,自動化變數用於簡化命令執行。Makefile中的偽目標不生成文件,用於避免與實際文件沖突。Makefile支持條件判斷和函數調用,實現邏輯控制和字元串處理。
本章節介紹了在Linux環境下使用GCC和Makefile進行C語言代碼的編譯和執行。學習後可直接進行實踐,實踐過程中會更直觀地理解操作流程。基礎了解即可,具體應用需在實踐中深入體會。
❸ 跪求高清 精通Linux C編程,這個教材網盤鏈接求一下大家!感恩
精通Linux C編程網路網盤在線觀看資源,免費分享給您:
https://pan..com/s/1BbeumArUIRm_gz20gxZClg
《精通Linux C編程》是由清華大學出版社2009年7月1日出版的一本書籍。《精通Linux C編程》系統地介紹了在Linux操作系統下用C語言進行程序設計的方法,並通過列舉大量的程序實例,使讀者很快地掌握在Linux操作系統下進行C程序開發的方法和技巧,培養開發大型應用程序的能力。《精通Linux C編程》內容主要包括Linux基礎知識介紹,Linux下的C語言編譯器、調試器和程序維護工具的使用方法,Linux下通過C語言進行文件操作和目錄操作的方法,標准I/O庫函數,進程概念、進程操作以及進程間通信的方法,線程操作,用C語言進行網路編程、資料庫編程以及GUI編程的方法等。最後通過一個飛機票網路售票系統的模擬程序演示了Linux C項目開發的方法和流程。
❹ Linux-C 編程 / 文本處理 / INI 文件解析器
LinuxC 編程中,關於文本處理和 INI 文件解析器的答案是:
INI 文件解析器介紹:
- INI 文件主要用於保存配置信息,格式簡單,常見於Linux系統。
- 開源項目 inih 是一個用 C 語言編寫的簡單 INI 文件解析器,非常適合嵌入式系統使用。
inih 的特點:
- 代碼精簡:設計緊湊,非常適合資源受限的嵌入式系統。
- 兼容性強:與 Python 的 ConfigParser 樣式兼容,支持 RFC 822 樣式的多行語法和 name: value 條目。
- SAX 風格設計:通過回調函數接收解析的 name = value 對,適合低內存嵌入式系統,保持代碼簡潔。
inih 的使用方法:
- 用戶可以自定義處理函數。
- 調用 ini_parse 函數,傳入 INI 文件路徑和自定義的回調函數。
- 回調函數接收解析的 section、name 和 value 字元串,進行處理。
inih 的程序結構:
- 包含數據結構定義、主程序和用戶自定義處理函數。
- 核心代碼集中在 ini.c 和 ini.h 文件中。
inih 的核心 API:
- ini_parse_stream 是關鍵函數,用於解析數據流。
- 該函數接受數據流和回調函數作為參數,實現 INI 文件的解析。
編譯參數:
- inih 提供三種類型的編譯參數,以滿足不同需求。
總結:inih 是一個簡單而強大的 INI 文件解析器,適合在 LinuxC 編程中進行文本處理和配置信息解析,尤其適用於嵌入式系統。通過自定義回調函數,用戶可以靈活地處理解析出的配置信息。