欧美人与禽2O2O性论交,秋霞免费视频,国产美女视频免费观看网址,国产成人亚洲综合网色欲网

一文搞懂Linux系統(tǒng)開發(fā)(linux 系統(tǒng)開發(fā))

文章目錄

Linux系統(tǒng)開發(fā)會用到什么?

C語言基礎

shell腳本

慢慢學會使用Makefile

常規(guī)Linux系統(tǒng)編程知識都有什么?哪些常用?哪些不常用?

常規(guī)Linux編程知識

文件IO

文件與目錄操作

標準IO庫

進程控制

線程編程

高級IO

進程間通信

數(shù)據庫

串口編程

網絡編程

結束語

Linux系統(tǒng)開發(fā)會用到什么?

C語言基礎

Linux系統(tǒng)內核是C語言編寫的,所以,Linux系統(tǒng)開發(fā)可能會和很多系統(tǒng)API打交道,需要掌握C語言基礎,C語言是Linux最基礎的開發(fā)語言,當然也可以用C 。一般做與系統(tǒng)交互的模塊時,用C語言多一些,做上層業(yè)務應用時,為了開發(fā)效率,會使用C 來開發(fā),畢竟C 是面向對象的開發(fā)語言,適合大型項目的開發(fā),方便模塊化,代碼復用率高。

shell腳本

shell腳本,也就是使用Linux系統(tǒng)下的一系列命令,有機組合在一起,而完成預期的功能。Linux設計思想是“小即是美”,這一思想是shell腳本編程的完美體現(xiàn)。每個命令只完成一種功能,不同的命令組合在一起,卻可以實現(xiàn)復雜的功能。做Linux下開發(fā),免不了要與腳本打交道(比如測試、分析數(shù)據等)。

慢慢學會使用Makefile

Makefile是Linux程序開發(fā)時必不可少的編譯管理腳本,這個里面東西也很多,不過剛開始可以簡單看看,夠用就行,隨著項目的越做越大,代碼文件與目錄越來越復雜,這時候的Makefile可能就會復雜一些,牽扯到不同目錄的Makefile的相互調用或者協(xié)調。

比如嵌入式系統(tǒng)中,一般不止一個應用程序,可能會有多個程序,在整體編譯時,會包括如下內容:

各個應用程序模塊的編譯(需要判斷是否編譯成功,出現(xiàn)編譯失敗的情況停下來,拋出錯誤信息)

應用程序打包(做成壓縮包或者分區(qū)鏡像)

默認配置文件打包

uboot、內核、文件系統(tǒng)、應用程序整體打包成一個鏡像文件,大小對應flash分區(qū)的大?。ù笮〔蛔阈枰畛淇諗?shù)據,保證與分區(qū)對應)。

自動版本管理,在編譯完成,打包完成后,可以通過腳本來自動根據時間生成版本號。

這些東西做起來其實挺復雜的,需要Makefile與shell腳本搭配完成。

常規(guī)Linux系統(tǒng)編程知識都有什么?哪些常用?哪些不常用?

常規(guī)Linux編程知識

文件IO

比較常用

Linux系統(tǒng)下,所有的資源都是以文件的形式訪問的,設備被抽象為設備文件,放于/dev目錄下。

基本的訪問函數(shù):

函數(shù)名 簡介 一般怎么用

open 打開設備文件 訪問設備文件,首先要先打開設備

close 關閉設備文件 文件訪問結束后,需要調用該接口,如果不關閉,會造fb耗盡

read 讀取數(shù)據 讀取數(shù)據,可以是文本文件內容,也可以是攝像頭數(shù)據等

write 寫入數(shù)據 向設備寫數(shù)據,比如串口通信時,可以用write發(fā)送數(shù)據

ioctl IO操作函數(shù) 該函數(shù)功能比較多,被稱作雜物箱~,可以讀、寫數(shù)據,做驅動的同學應該很了解

fcntl 屬性設置函數(shù) 對已經打開的設備,設置屬性,比如可以設置串口讀數(shù)據的阻塞和非阻塞屬性

lseek 改變偏移量 一般用于對已打開的文件讀寫位置的偏移量修改

文件與目錄操作

常用

系統(tǒng)編程少不了文件與目錄的訪問,比如你要讀取某個目錄下的所有文件名字,或者修改文件名、修改目錄,移動文件等等。

函數(shù)名 簡介 一般怎么用

stat、 fstat 、lstat 獲取文件狀態(tài) 可以獲取到文件的創(chuàng)建、訪問時間,文件大小等

access 檢測文件屬性 常用于判斷文件是否存在

chmod 修改文件權限 一般涉及到文件訪問權限修改時,會用到,比如增加可執(zhí)行權限

mkdir 創(chuàng)建目錄 一般在程序里判斷到需要用到的目錄不存在時,用此函數(shù)創(chuàng)建

rmdir 刪除目錄 需要刪除目錄時使用,一般很少用到

opendir 打開目錄 在讀取目錄信息之前,需要先打開目錄(類中與文件訪問)

readdir 讀取目錄內容 在檢索文件時,會用到,讀取目錄下文件列表

closedir 關閉目錄 在讀取完成后,記得關閉目錄

sync 同步數(shù)據到磁盤 這個函數(shù)一般在修改文件,寫入數(shù)據后調用,讓系統(tǒng)把數(shù)據同步到磁盤

標準IO庫

比較常用

所謂標準IO庫,其實是C語言里的文件IO,另外這里面的IO與前面提到的“文件IO”在文件的讀寫上有個區(qū)別,標準IO是有緩存的,而Linux系統(tǒng)的文件IO函數(shù)是無緩存的。

主要是文件操作函數(shù):

函數(shù)名 簡介 一般怎么用

fopen 打開文件 放文件文件前先調用fopen獲取文件句柄

fclose 關閉文件 文件訪問結束后,記得關閉文件,否則造成內存泄露

fread 讀取文件 讀取文件數(shù)據

fseek 修改文件讀寫位置 用于修改文件讀寫的位置偏移量

進程控制

一般

如果你不使用多進程編程的話,這一項可能就用的不多,我的代碼里用的也不是太多。

這個知識點主要是進程的創(chuàng)建、子進程管理、進程退出資源釋放等等。

線程編程

比較常用

上了系統(tǒng),一般跑的任務就會比較多,線程是比較常用的,一般可以分為兩種,一種是長時間運行的任務,一種是執(zhí)行完任務自行退出。現(xiàn)在C 11已經支持了線程,使用起來非常方便。之前沒有C 11時,為了方便使用,都是對pthrea_簇函數(shù)進行了二次封裝。

高級IO

常用

可能你會比較奇怪,為什么這么多“IO”相關的東西:文件IO、標準文件IO、高級IO!

是的,這里的IO比較多,前兩個“IO”還有點相似,這個高級IO和前面兩個有點不太一樣。

高級IO里主要是講的IO操作的方式:阻塞、非阻塞控制,最主要的是通過select和poll實現(xiàn)IO多路復用,這樣可以實現(xiàn)程序的異步執(zhí)行?,F(xiàn)在用的比較多的Nginx,就是使用的epoll模型,實現(xiàn)的高并發(fā)。

進程間通信

非常常用

一般在linux系統(tǒng)下面,既然是系統(tǒng),就不止一個應用程序在運行,那多個應用程序,就會需要數(shù)據交互,那么,就用到了進程間通信,進程間通信有許多開源的工具(比如DBUS),這里簡單介紹一下系統(tǒng)里提供的通信方式:

名稱 簡介

管道 一般用于父子進程間通信,有名管道可以跨程序

消息隊列 消息隊列可以分類型,適用于數(shù)據量小的,簡單通信

信號量 PV操作,用于同步,可以與共享內存搭配用,寫完數(shù)據,告訴另一個線程可以讀取了

共享內存 適用于大數(shù)據量的傳輸

socket socke不僅是網絡通信的接口,也可以是本地進程間通信(UNIX socke),這種方式很常用

數(shù)據庫

常用

如果是存儲配置參數(shù),我不太推薦用數(shù)據庫,用json就挺好。數(shù)據一般用于存儲比較規(guī)則的數(shù)據,這樣方便數(shù)據的管理。在嵌入式系統(tǒng),用的比較多的是sqlite數(shù)據庫。

串口編程

比較常用

在Linux下,特別是做嵌入式系統(tǒng),這個可能是少不了的,比較常用。其實串口編程也很簡單,可能200行代碼就可以把串口通信建立起來了。應用層的數(shù)據通信,就是使用write、和read函數(shù)操作,但是如果想做的比較好一些,就需要花點時間去做個軟件框架,比如利用前面提到的select實現(xiàn)異步操作(后面文章會介紹實現(xiàn)方式以及串口的封裝)。

網絡編程

超級常用

相信現(xiàn)在的嵌入式設備基本上都需要網絡通信功能,所以,網絡編程自然是非常常用的。特備是現(xiàn)在物聯(lián)網的發(fā)展,萬物互聯(lián)。Linux下的網絡編程,有一系列的API函數(shù),挺多的,參數(shù)配置也比較多,剛開始會讓人很頭疼,不知道哪個參數(shù)設置個什么值合適(我們都是慢慢試錯試出來的)。這個也不用擔心,我后面會給大家分享出來我用C 封裝好的網絡通信庫,包括TCP、UPD、UDP組播、域套接字(本地)等的封裝。

結束語

————————————————

版權聲明:本文為CSDN博主「fensnote」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權協(xié)議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/wuquan_1230/article/details/104808817

一文搞懂Linux系統(tǒng)開發(fā)(linux 系統(tǒng)開發(fā))

相關新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部