日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

fseek linux 大文件_一文搞懂Linux系统开发

發布時間:2025/4/5 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fseek linux 大文件_一文搞懂Linux系统开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

Linux系統開發會用到什么?

C語言基礎

shell腳本

慢慢學會使用Makefile

常規Linux系統編程知識都有什么?哪些常用?哪些不常用?

常規Linux編程知識

文件IO

文件與目錄操作

標準IO庫

進程控制

線程編程

高級IO

進程間通信

數據庫

串口編程

網絡編程

結束語

Linux系統開發會用到什么?

C語言基礎

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

shell腳本

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

慢慢學會使用Makefile

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

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

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

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

默認配置文件打包

uboot、內核、文件系統、應用程序整體打包成一個鏡像文件,大小對應flash分區的大小(大小不足需要填充空數據,保證與分區對應)。

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

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

常規Linux系統編程知識都有什么?哪些常用?哪些不常用?

常規Linux編程知識

文件IO

比較常用

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

基本的訪問函數:

函數名簡介一般怎么用

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

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

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

write寫入數據向設備寫數據,比如串口通信時,可以用write發送數據

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

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

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

文件與目錄操作

常用

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

函數名簡介一般怎么用

stat、 fstat 、lstat獲取文件狀態可以獲取到文件的創建、訪問時間,文件大小等

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

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

mkdir創建目錄一般在程序里判斷到需要用到的目錄不存在時,用此函數創建

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

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

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

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

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

標準IO庫

比較常用

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

主要是文件操作函數:

函數名簡介一般怎么用

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

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

fread讀取文件讀取文件數據

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

進程控制

一般

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

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

線程編程

比較常用

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

高級IO

常用

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

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

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

進程間通信

非常常用

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

名稱簡介

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

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

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

共享內存適用于大數據量的傳輸

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

數據庫

常用

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

串口編程

比較常用

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

網絡編程

超級常用

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

結束語

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

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

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

總結

以上是生活随笔為你收集整理的fseek linux 大文件_一文搞懂Linux系统开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。