欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

【嵌入式八股24】linux軟件開發(fā)知識點

寫一半我真后悔了,這篇太長了……

一、進程間通訊方式

在 Linux 系統(tǒng)中,進程間通訊(IPC)是實現(xiàn)不同進程之間數(shù)據(jù)交互和協(xié)同工作的重要機制,常見的通訊方式有以下幾種:

  1. 管道(Pipe)及有名管道(named pipe)
    • 管道:是一種半雙工的通信方式,數(shù)據(jù)只能單向流動,且只能在具有親緣關系(如父子進程)的進程間使用。它在創(chuàng)建時會在內(nèi)核中開辟一塊緩沖區(qū),用于數(shù)據(jù)的傳輸。
    • 有名管道:克服了管道只能在親緣關系進程間通信的限制,它以文件的形式存在于文件系統(tǒng)中,通過文件名來訪問。不同進程只要擁有對該文件的訪問權(quán)限,就可以進行通信。
  2. 信號(Signal):是一種異步通信機制,用于通知進程發(fā)生了某種事件。信號可以由系統(tǒng)內(nèi)核、其他進程或用戶手動發(fā)送,進程接收到信號后會根據(jù)預先設置的信號處理函數(shù)來做出相應的響應,如終止進程、暫停進程等。
  3. 報文(Message)隊列(消息隊列):消息隊列是一個消息的鏈表,存放在內(nèi)核中。進程可以向消息隊列中發(fā)送消息,也可以從消息隊列中讀取消息。消息隊列可以實現(xiàn)不同進程間的消息傳遞,并且可以根據(jù)消息的類型進行分類處理。
  4. 共享內(nèi)存:是一種高效的進程間通信方式,它允許不同進程訪問同一塊內(nèi)存區(qū)域。進程可以直接對共享內(nèi)存進行讀寫操作,從而實現(xiàn)數(shù)據(jù)的共享。為了保證數(shù)據(jù)的一致性和正確性,使用共享內(nèi)存時需要配合信號量等同步機制來避免數(shù)據(jù)沖突。
  5. 信號量(semaphore):本質(zhì)上是一個計數(shù)器,用于控制對共享資源的訪問。它可以實現(xiàn)進程間的同步和互斥,確保在同一時刻只有一個或多個進程可以訪問共享資源,防止數(shù)據(jù)競爭和不一致的問題。
  6. 套接口(Socket):是一種通用的進程間通信機制,不僅可以用于同一臺主機上的進程間通信,還可以用于不同主機之間的網(wǎng)絡通信。Socket 支持多種通信協(xié)議,如 TCP、UDP 等,根據(jù)不同的需求可以選擇合適的協(xié)議進行通信。

二、內(nèi)存管理相關

(一)內(nèi)存申請函數(shù)

在 C 語言中,常用的內(nèi)存申請函數(shù)有以下幾個,它們在動態(tài)內(nèi)存分配中起著關鍵作用:

  1. calloc:函數(shù)會在內(nèi)存中分配一塊指定大小的內(nèi)存空間,并將該空間的所有字節(jié)初始化為 0。它接受兩個參數(shù),分別是元素個數(shù)和每個元素的大小,返回指向分配內(nèi)存的指針。例如,calloc(10, sizeof(int)) 會分配 10 個 int 類型大小的內(nèi)存空間,并初始化為 0。
  2. malloc:用于分配指定字節(jié)數(shù)的內(nèi)存空間。它只有一個參數(shù),即要分配的字節(jié)數(shù),返回指向分配內(nèi)存的指針。如果分配失敗,返回 NULL。例如,int *ptr = malloc(10 * sizeof(int)) 分配了 10 個 int 類型大小的內(nèi)存空間。
  3. realloc:可以重新調(diào)整已分配內(nèi)存的大小。它接受兩個參數(shù),第一個是指向已分配內(nèi)存的指針,第二個是新的內(nèi)存大小。如果重新分配成功,返回指向新內(nèi)存的指針;如果失敗,返回 NULL。例如,ptr = realloc(ptr, 20 * sizeof(int)) 可以將原來分配的內(nèi)存空間大小調(diào)整為 20 個 int 類型大小。

(二)Linux 內(nèi)存分配說明

在 Linux 系統(tǒng)中,內(nèi)存被劃分為多個區(qū)域,每個區(qū)域有其特定的用途和特點,存放不同類型的數(shù)據(jù):

內(nèi)存區(qū)域 存放數(shù)據(jù) 說明
靜態(tài)存儲區(qū) 靜態(tài)數(shù)據(jù)、全局數(shù)據(jù)、常量 在程序編譯的時候就已經(jīng)分配好,其生命周期與程序的運行周期相同,在程序結(jié)束時才會被釋放。
棧區(qū) 局部變量、函數(shù)參數(shù) 棧內(nèi)存分配運算內(nèi)置于處理器的指令集中,因此效率很高,但棧的大小有限,分配的內(nèi)存容量相對較小。當函數(shù)調(diào)用時,局部變量和函數(shù)參數(shù)會被壓入棧中;函數(shù)返回時,這些數(shù)據(jù)會被彈出棧。
堆區(qū) malloc 申請的內(nèi)存 用于動態(tài)內(nèi)存分配,需要程序員手動使用 free 函數(shù)來釋放內(nèi)存,否則可能會導致內(nèi)存泄漏。堆內(nèi)存的分配比較靈活,可以根據(jù)程序的需求動態(tài)調(diào)整大小。
代碼區(qū) 代碼 存放函數(shù)體的二進制代碼,是程序執(zhí)行的指令集合。代碼區(qū)是只讀的,防止程序意外修改自身的指令。
文字常量區(qū) 常量字符串 程序結(jié)束后由系統(tǒng)釋放,存放程序中定義的常量字符串,這些字符串在程序運行過程中不會被修改。

三、GCC 編譯過程

GCC(GNU Compiler Collection)是 Linux 系統(tǒng)中常用的編譯器,它將 C/C++ 等源程序編譯成可執(zhí)行文件需要經(jīng)過多個步驟,每個步驟都有其特定的作用和生成的文件:

過程 生成文件 說明
預編譯 *.i 預處理器首先處理源文件中的預處理指令,如 #include(包含頭文件)、#define(宏定義)等,將頭文件的內(nèi)容插入到源文件中,并展開宏定義。經(jīng)過預編譯后,生成一個 .i 文件,該文件包含了展開后的源代碼。
編譯 *.s 編譯器將預編譯后的 .i 文件進行語法分析、語義分析和優(yōu)化等操作,生成匯編代碼,保存在 .s 文件中。
匯編 *.o 匯編器將匯編代碼轉(zhuǎn)換為機器可執(zhí)行的目標代碼,生成 .o 文件。每個 .c 文件經(jīng)過編譯和匯編后都會生成一個對應的 .o 文件。
鏈接 可執(zhí)行文件 鏈接器將多個 .o 文件以及所需的庫文件進行鏈接,解析符號引用,將各個目標文件和庫文件中的代碼和數(shù)據(jù)組合成一個完整的可執(zhí)行文件。

四、文件系統(tǒng)

文件系統(tǒng)是 Linux 系統(tǒng)中用于組織和存儲文件的重要機制,常見的文件系統(tǒng)有以下幾種,它們在不同的場景中有著各自的優(yōu)勢和應用:

文件系統(tǒng) 說明
fat 早期廣泛使用的文件系統(tǒng),兼容性好,支持多種操作系統(tǒng),但安全性和性能相對較低,不支持大文件和長文件名。
fat32 fat 文件系統(tǒng)的擴展,支持更大的分區(qū)和文件,提高了對大文件的支持能力,但仍然存在一些局限性,如單個文件大小不能超過 4GB。
ntfs 是 Windows 系統(tǒng)常用的文件系統(tǒng),具有較高的安全性和性能,支持文件壓縮、加密、權(quán)限管理等功能,但在 Linux 系統(tǒng)中對 ntfs 的支持相對有限。
ext2 是 Linux 系統(tǒng)早期的文件系統(tǒng),具有較好的性能和穩(wěn)定性,但不支持日志功能,在系統(tǒng)崩潰時可能會導致數(shù)據(jù)丟失。
ext3 ext2 的基礎上增加了日志功能,提高了文件系統(tǒng)的可靠性和數(shù)據(jù)安全性,當系統(tǒng)崩潰時可以通過日志恢復文件系統(tǒng)的一致性。
ext4 ext3 的升級版本,進一步提高了性能、支持更大的文件和分區(qū),并且增加了一些新的特性,如延遲分配、多塊分配等,是目前 Linux 系統(tǒng)中常用的文件系統(tǒng)之一。
nfs 網(wǎng)絡文件系統(tǒng),允許不同的計算機通過網(wǎng)絡共享文件和目錄,使得用戶可以像訪問本地文件系統(tǒng)一樣訪問遠程的文件資源,常用于分布式系統(tǒng)和網(wǎng)絡存儲環(huán)境中。

五、硬鏈接和軟連接

在 Linux 系統(tǒng)中,鏈接是一種特殊的文件,用于指向其他文件或目錄,分為硬鏈接和軟鏈接(符號鏈接),它們在實現(xiàn)方式和特點上有所不同:

(一)硬鏈接

硬鏈接直接指向文件的 i 節(jié)點(索引節(jié)點),它和原文件具有相同的 i 節(jié)點,共享相同的數(shù)據(jù)和屬性。因此,硬鏈接文件顯示的大小和原文件是一樣的,并且對原文件的修改也會反映在硬鏈接文件中。需要注意的是,硬鏈接不能鏈接目錄文件,因為這可能會導致目錄結(jié)構(gòu)的混亂。例如:

ln file2 /home/xiaxiaowen/file2hard

上述命令創(chuàng)建了一個名為 file2hard 的硬鏈接,指向 file2 文件。

(二)軟鏈接(符號鏈接)

軟鏈接則是建立了一個新的文件,這個文件包含了指向目標文件的路徑信息。軟鏈接文件和原文件的 i 節(jié)點不一樣,它類似于一個快捷方式。軟鏈接可以鏈接目錄,并且當原文件被刪除或移動時,軟鏈接會變成無效鏈接。例如:

ln -s file2 /home/xiaxiaowen/file2soft

上述命令創(chuàng)建了一個名為 file2soft 的軟鏈接,指向 file2 文件。

六、Linux 內(nèi)核子系統(tǒng)

Linux 內(nèi)核是操作系統(tǒng)的核心部分,由多個子系統(tǒng)組成,這些子系統(tǒng)協(xié)同工作,提供了系統(tǒng)的基本功能和服務:

  1. 進程管理:負責進程的創(chuàng)建、調(diào)度、終止等操作,管理進程的生命周期。它包括進程的狀態(tài)轉(zhuǎn)換(如運行態(tài)、就緒態(tài)、阻塞態(tài)之間的轉(zhuǎn)換)、進程間的通信和同步等功能,確保系統(tǒng)中多個進程能夠高效、有序地運行。
  2. 內(nèi)存管理:對系統(tǒng)的內(nèi)存資源進行分配、回收和管理,包括物理內(nèi)存和虛擬內(nèi)存的管理。內(nèi)存管理子系統(tǒng)負責將內(nèi)存分配給進程使用,并通過虛擬內(nèi)存技術使得進程能夠使用比實際物理內(nèi)存更大的地址空間,同時還需要處理內(nèi)存的換入換出等操作,以提高內(nèi)存的利用率。
  3. I/O 管理:管理系統(tǒng)的輸入輸出設備,包括磁盤、網(wǎng)卡、串口等設備。它負責設備的驅(qū)動程序管理、數(shù)據(jù)的讀寫操作以及設備的中斷處理等,為用戶和應用程序提供了統(tǒng)一的 I/O 接口,使得應用程序可以方便地訪問各種設備。
  4. 文件系統(tǒng)管理:負責管理文件系統(tǒng)的創(chuàng)建、掛載、卸載以及文件的讀寫、目錄的操作等。文件系統(tǒng)管理子系統(tǒng)提供了對文件和目錄的組織和存儲功能,使得用戶可以方便地存儲和訪問數(shù)據(jù)。

七、進程狀態(tài)

在 Linux 系統(tǒng)中,進程有多種狀態(tài),這些狀態(tài)反映了進程在不同時刻的運行情況:

  1. 運行態(tài):進程正在處理器上執(zhí)行,占用 CPU 資源。在單處理器系統(tǒng)中,同一時刻只有一個進程處于運行態(tài);在多處理器系統(tǒng)中,可能有多個進程同時處于運行態(tài)。
  2. 就緒態(tài):進程已經(jīng)準備好執(zhí)行,但由于 CPU 資源有限,暫時沒有被調(diào)度到處理器上運行。就緒態(tài)的進程在就緒隊列中等待調(diào)度,一旦獲得 CPU 資源,就可以立即進入運行態(tài)。
  3. 阻塞態(tài):進程因為等待某個事件的發(fā)生(如 I/O 操作完成、等待信號等)而暫時無法繼續(xù)執(zhí)行,此時進程會進入阻塞態(tài)。在阻塞態(tài)下,進程不會占用 CPU 資源,直到所等待的事件發(fā)生,進程才會從阻塞態(tài)轉(zhuǎn)換為就緒態(tài)。

八、文件系統(tǒng)組成

Linux 文件系統(tǒng)由多個部分組成,每個部分都有其特定的功能和作用,共同構(gòu)成了文件系統(tǒng)的完整結(jié)構(gòu):

  1. 超級塊:存放文件系統(tǒng)本身的信息,比如文件系統(tǒng)的類型、每個區(qū)域的大小、未被使用的磁盤塊的信息等。不同版本的文件系統(tǒng),超級塊的具體內(nèi)容可能會稍有差別。超級塊是文件系統(tǒng)的關鍵部分,它描述了文件系統(tǒng)的整體布局和屬性。
  2. i-節(jié)點表:每個文件都有其屬性,如文件的大小、所有者、最近修改時間等,這些屬性被存儲在 ino_t 的結(jié)構(gòu)體中,稱為 i 節(jié)點。所有的 i 節(jié)點都有相同的大小,i 節(jié)點表就是這樣一些節(jié)點的列表。表中的每個 i 節(jié)點都通過位置來標識,例如標識為 2 的 i 節(jié)點位于文件系統(tǒng) i 節(jié)點表中的第 3 個位置(因為索引通常從 0 開始計數(shù))。i 節(jié)點是文件系統(tǒng)中用于管理文件屬性和數(shù)據(jù)存儲位置的重要數(shù)據(jù)結(jié)構(gòu)。
  3. 數(shù)據(jù)塊:用于存放文件的內(nèi)容。由于數(shù)據(jù)塊的大小是固定的,所以有時一個文件會分布在多個數(shù)據(jù)塊上,甚至可能分布在多個磁盤上。數(shù)據(jù)塊是文件數(shù)據(jù)的實際存儲單元,文件系統(tǒng)通過 i 節(jié)點來記錄文件數(shù)據(jù)在數(shù)據(jù)塊中的存儲位置。

九、i 節(jié)點

i 節(jié)點是一個 64 字節(jié)長的表,表中包含了文件的相關信息,是文件系統(tǒng)中非常重要的數(shù)據(jù)結(jié)構(gòu)。其中包含了文件的大小、文件所有者、文件的存取許可方式以及文件的類型等重要信息。通過 i 節(jié)點,文件系統(tǒng)可以快速地定位和管理文件的屬性和數(shù)據(jù)存儲位置。每個文件都有一個唯一的 i 節(jié)點,文件系統(tǒng)通過 i 節(jié)點來區(qū)分不同的文件。

十、Linux 文件類型

在 Linux 系統(tǒng)中,文件可以分為多種類型,不同類型的文件具有不同的特點和用途,通過文件的屬性可以進行區(qū)分:

文件類型 屬性 說明
普通文件 - 包含數(shù)據(jù)、程序代碼等內(nèi)容的文件,如文本文件、可執(zhí)行文件等。
目錄 d 用于組織和管理文件和目錄的特殊文件,類似于 Windows 系統(tǒng)中的文件夾。目錄中包含了文件和子目錄的信息。
字符設備文件 c 用于表示字符設備,如串口、終端等,這些設備以字符流的方式進行數(shù)據(jù)傳輸。
塊設備文件 b 用于表示塊設備,如硬盤、磁盤分區(qū)等,這些設備以塊為單位進行數(shù)據(jù)存儲和傳輸。
符號鏈接文件 l 也稱為軟鏈接,是一種特殊的文件,它指向另一個文件或目錄,類似于快捷方式。
套接字文件 s 用于實現(xiàn)進程間的網(wǎng)絡通信,是網(wǎng)絡編程中常用的文件類型。
管道文件 p 用于實現(xiàn)進程間的通信,分為匿名管道和有名管道,是一種半雙工的通信方式。

十一、Linux 常用系統(tǒng)調(diào)用函數(shù)

Linux 系統(tǒng)提供了豐富的系統(tǒng)調(diào)用函數(shù),用于實現(xiàn)各種系統(tǒng)功能,這些函數(shù)是用戶空間程序與內(nèi)核進行交互的接口。根據(jù)功能的不同,可以將系統(tǒng)調(diào)用函數(shù)分為以下幾類:

(一)進程控制函數(shù)

進程控制函數(shù)用于管理進程的生命周期,包括進程的創(chuàng)建、運行、終止等操作:

函數(shù) 功能
fork 創(chuàng)建一個新進程,新進程是原進程的副本,父子進程共享部分資源,如代碼段等。
clone 按指定條件創(chuàng)建子進程,可以更靈活地控制子進程的資源共享和行為。
execve 運行可執(zhí)行文件,用新的程序替換當前進程的內(nèi)存空間,實現(xiàn)程序的執(zhí)行。
exit 中止進程,在終止進程前會進行一些清理工作,如關閉文件描述符、釋放資源等。
_exit 立即中止當前進程,不會進行過多的清理工作,直接結(jié)束進程的運行。
getdtablesize 獲取進程所能打開的最大文件數(shù),用于限制進程對文件的訪問數(shù)量。
getpgid 獲取指定進程組標識號,用于管理進程組的相關操作。
setpgid 設置指定進程組標志號,用于改變進程所屬的進程組。
getpgrp 獲取當前進程組標識號,返回當前進程所屬的進程組 ID。
setpgrp 設置當前進程組標志號,將當前進程設置為新的進程組組長。
getpid 獲取進程標識號,返回當前進程的唯一 ID。
getppid 獲取父進程標識號,返回當前進程的父進程的 ID。
getpriority 獲取調(diào)度優(yōu)先級,用于了解進程在系統(tǒng)中的調(diào)度優(yōu)先級。
setpriority 設置調(diào)度優(yōu)先級,調(diào)整進程在系統(tǒng)中的調(diào)度優(yōu)先級,影響進程獲取 CPU 資源的機會。
modify_ldt 讀寫進程的本地描述表,用于管理進程的內(nèi)存訪問權(quán)限等信息。
nanosleep 使進程睡眠指定的時間,以納秒為單位,用于實現(xiàn)精確的時間延遲。
nice 改變分時進程的優(yōu)先級,調(diào)整進程在分時系統(tǒng)中的調(diào)度優(yōu)先級。
pause 掛起進程,等待信號,直到進程接收到一個信號才會繼續(xù)執(zhí)行。
personality 設置進程運行域,用于指定進程的運行環(huán)境和行為。
prctl 對進程進行特定操作,如設置進程的屬性、獲取進程的狀態(tài)等。
ptrace 進程跟蹤,用于調(diào)試和監(jiān)控其他進程的運行情況。
sched_get_priority_max 取得靜態(tài)優(yōu)先級的上限,了解系統(tǒng)中進程優(yōu)先級的最大值。
sched_get_priority_min 取得靜態(tài)優(yōu)先級的下限,了解系統(tǒng)中進程優(yōu)先級的最小值。
sched_getparam 取得進程的調(diào)度參數(shù)
sched_getscheduler 取得指定進程的調(diào)度策略
sched_rr_get_interval 取得按RR算法調(diào)度的實時進程的時間片長度
sched_setparam 設置進程的調(diào)度參數(shù)
sched_setscheduler 設置指定進程的調(diào)度策略和參數(shù)
sched_yield 進程主動讓出處理器,并將自己放入調(diào)度隊列隊尾
vfork 創(chuàng)建一個子進程,以供執(zhí)行新程序,常與 execve 等同時使用
wait 等待子進程終止
wait3 參見 wait
waitpid 等待指定子進程終止
wait4 參見 waitpid
capget 獲取進程權(quán)限
capset 設置進程權(quán)限
getsid 獲取會話標識號
setsid 設置會話標識號

以下是對上一部分內(nèi)容的繼續(xù)完善,涵蓋了剩余的系統(tǒng)調(diào)用函數(shù)分類以及其他重要的 Linux 軟件開發(fā)知識點:

(二)文件操作函數(shù)

文件操作函數(shù)用于對文件進行各種操作,包括打開、關閉、讀寫、定位等:

函數(shù) 功能
fcntl 文件控制,可用于設置文件的各種屬性,如文件描述符標志、文件狀態(tài)標志等。
open 打開文件,返回一個文件描述符,用于后續(xù)對文件的操作??梢灾付ù蜷_文件的模式(如只讀、讀寫等)和權(quán)限。
creat 創(chuàng)建新文件,如果文件已存在則截斷其內(nèi)容。可以指定文件的權(quán)限。
close 關閉文件描述字,釋放與文件相關的資源,如文件句柄等。
read 從文件中讀取數(shù)據(jù),將數(shù)據(jù)讀取到指定的緩沖區(qū)中。返回實際讀取的字節(jié)數(shù)。
write 向文件中寫入數(shù)據(jù),將緩沖區(qū)中的數(shù)據(jù)寫入到文件中。返回實際寫入的字節(jié)數(shù)。
readv 從文件讀入數(shù)據(jù)到緩沖數(shù)組中,適用于從文件中讀取多個不連續(xù)的數(shù)據(jù)塊。
writev 將緩沖數(shù)組里的數(shù)據(jù)寫入文件,適用于向文件中寫入多個不連續(xù)的數(shù)據(jù)塊。
pread 對文件進行隨機讀,在不改變文件當前偏移量的情況下,從指定位置讀取數(shù)據(jù)。
pwrite 對文件進行隨機寫,在不改變文件當前偏移量的情況下,向指定位置寫入數(shù)據(jù)。
lseek 移動文件指針,調(diào)整文件的當前偏移量,用于隨機訪問文件中的數(shù)據(jù)。
_llseek 在 64 位地址空間里移動文件指針,用于處理大文件的偏移量操作。
dup 復制已打開的文件描述字,返回一個新的文件描述符,指向同一個文件。
dup2 按指定條件復制文件描述字,可以將一個文件描述符復制到另一個指定的文件描述符上。
flock 文件加/解鎖,用于實現(xiàn)對文件的獨占或共享訪問控制,避免多個進程同時修改文件導致數(shù)據(jù)不一致。
poll I/O 多路轉(zhuǎn)換,用于監(jiān)視多個文件描述符的狀態(tài),當其中一個或多個文件描述符準備好進行 I/O 操作時,函數(shù)返回。
truncate 截斷文件,將文件的長度縮短到指定的長度。如果文件長度大于指定長度,則截斷超出部分;如果文件長度小于指定長度,則文件大小不變。
ftruncate truncate 類似,只不過操作的是已打開的文件。
umask 設置文件權(quán)限掩碼,用于控制新創(chuàng)建文件的默認權(quán)限。
fsync 把文件在內(nèi)存中的部分寫回磁盤,確保文件的數(shù)據(jù)已實際寫入磁盤,而不是僅僅存在于內(nèi)存緩沖區(qū)中。

(三)文件系統(tǒng)操作函數(shù)

文件系統(tǒng)操作函數(shù)用于對文件系統(tǒng)進行管理,包括目錄操作、文件權(quán)限設置、文件系統(tǒng)信息獲取等:

函數(shù) 功能
access 確定文件的可存取性,檢查當前進程是否具有對指定文件的讀、寫或執(zhí)行權(quán)限。
chdir 改變當前工作目錄,將當前進程的工作目錄切換到指定的目錄。
fchdir chdir 類似,只不過操作的是通過文件描述符指定的目錄。
chmod 改變文件方式,設置文件的訪問權(quán)限,如讀、寫、執(zhí)行權(quán)限等。
fchmod chmod 類似,只不過操作的是已打開的文件。
chown 改變文件的屬主或用戶組,將文件的所有權(quán)或所屬用戶組更改為指定的用戶或用戶組。
fchown chown 類似,只不過操作的是已打開的文件。
lchown chown 類似,但是在處理符號鏈接時,操作的是符號鏈接本身,而不是其指向的文件。
chroot 改變根目錄,將當前進程的根目錄更改為指定的目錄,常用于創(chuàng)建一個隔離的文件系統(tǒng)環(huán)境。
stat 取文件狀態(tài)信息,獲取文件的詳細屬性,如文件大小、修改時間、權(quán)限等。
lstat stat 類似,但是在處理符號鏈接時,返回的是符號鏈接本身的屬性,而不是其指向的文件的屬性。
fstat stat 類似,只不過操作的是已打開的文件。
statfs 取文件系統(tǒng)信息,獲取文件系統(tǒng)的相關信息,如總?cè)萘?、可用空間等。
fstatfs statfs 類似,只不過操作的是已打開的文件所在的文件系統(tǒng)。
readdir 讀取目錄項,用于讀取目錄中的文件和子目錄信息。
getdents 也是用于讀取目錄項,與 readdir 功能類似。
mkdir 創(chuàng)建目錄,在文件系統(tǒng)中創(chuàng)建一個新的目錄。
mknod 創(chuàng)建索引節(jié)點,用于創(chuàng)建特殊文件,如設備文件等。
rmdir 刪除目錄,刪除一個空目錄。如果目錄不為空,則無法刪除。
rename 文件改名,將文件或目錄重命名為指定的名稱。
link 創(chuàng)建鏈接,創(chuàng)建一個硬鏈接,指向指定的文件。
symlink 創(chuàng)建符號鏈接,創(chuàng)建一個軟鏈接,指向指定的文件或目錄。
unlink 刪除鏈接,刪除指定的硬鏈接或文件。如果是符號鏈接,則刪除符號鏈接本身。
readlink 讀符號鏈接的值,獲取符號鏈接指向的目標文件或目錄的路徑。
mount 安裝文件系統(tǒng),將文件系統(tǒng)掛載到指定的掛載點,使得文件系統(tǒng)可以被訪問。
umount 卸下文件系統(tǒng),卸載已掛載的文件系統(tǒng),使其不再可訪問。
ustat 取文件系統(tǒng)信息,獲取文件系統(tǒng)的狀態(tài)信息,如磁盤使用情況等。
utime 改變文件的訪問修改時間,設置文件的最后訪問時間和最后修改時間。
utimes utime 類似,用于設置文件的時間戳。
quotactl 控制磁盤配額,用于管理用戶或用戶組在文件系統(tǒng)上的磁盤使用限制。

(四)系統(tǒng)控制函數(shù)

系統(tǒng)控制函數(shù)用于對系統(tǒng)進行各種控制操作,如設置系統(tǒng)參數(shù)、獲取系統(tǒng)信息、控制設備等:

函數(shù) 功能
ioctl I/O 總控制函數(shù),用于對設備進行各種控制操作,如設置設備參數(shù)、獲取設備狀態(tài)等。
_sysctl 讀/寫系統(tǒng)參數(shù),用于讀取和修改系統(tǒng)的內(nèi)核參數(shù),如網(wǎng)絡參數(shù)、內(nèi)存參數(shù)等。
acct 啟用或禁止進程記賬,用于記錄進程的資源使用情況,如 CPU 時間、內(nèi)存使用等。
getrlimit 獲取系統(tǒng)資源上限,獲取進程對某種系統(tǒng)資源(如文件描述符數(shù)量、內(nèi)存大小等)的限制。
setrlimit 設置系統(tǒng)資源上限,設置進程對某種系統(tǒng)資源的限制。
getrusage 獲取系統(tǒng)資源使用情況,獲取進程或系統(tǒng)的資源使用統(tǒng)計信息,如 CPU 時間、內(nèi)存使用等。
uselib 選擇要使用的二進制函數(shù)庫,用于指定進程使用特定的函數(shù)庫。
ioperm 設置端口 I/O 權(quán)限,設置進程對特定端口的 I/O 訪問權(quán)限。
iopl 改變進程 I/O 權(quán)限級別,提升或降低進程的 I/O 權(quán)限級別,使其能夠訪問特定的 I/O 端口。
outb 低級端口操作,用于對端口進行低級的讀寫操作。
reboot 重新啟動,用于重新啟動系統(tǒng)。
swapon 打開交換文件和設備,啟用交換空間,將內(nèi)存中的數(shù)據(jù)交換到磁盤上,以釋放內(nèi)存空間。
swapoff 關閉交換文件和設備,禁用交換空間,將磁盤上的交換數(shù)據(jù)換回內(nèi)存。
bdflush 控制 bdflush 守護進程,用于管理磁盤緩沖區(qū)的刷新操作,確保數(shù)據(jù)及時寫入磁盤。
sysfs 取核心支持的文件系統(tǒng)類型,獲取內(nèi)核支持的文件系統(tǒng)類型列表。
sysinfo 取得系統(tǒng)信息,獲取系統(tǒng)的基本信息,如內(nèi)存大小、CPU 數(shù)量等。
adjtimex 調(diào)整系統(tǒng)時鐘,用于調(diào)整系統(tǒng)的時間和時間間隔。
alarm 設置進程的鬧鐘,設置一個定時器,在指定的時間后向進程發(fā)送 SIGALRM 信號。
getitimer 獲取計時器值,獲取進程中指定類型的計時器的值。
setitimer 設置計時器值,設置進程中指定類型的計時器的值和選項。
gettimeofday 取時間和時區(qū),獲取當前的時間和時區(qū)信息。
settimeofday 設置時間和時區(qū),設置系統(tǒng)的時間和時區(qū)。
stime 設置系統(tǒng)日期和時間,設置系統(tǒng)的日期和時間。
time 取得系統(tǒng)時間,返回當前的系統(tǒng)時間,以秒為單位。
times 取進程運行時間,獲取進程的用戶時間、系統(tǒng)時間和總運行時間。
uname 獲取當前 UNIX 系統(tǒng)的名稱、版本和主機等信息,返回系統(tǒng)的標識信息。
vhangup 掛起當前終端,掛起當前的終端會話。
nfsservctl 對 NFS 守護進程進行控制,用于管理 NFS 服務器的守護進程,如啟動、停止、重新加載等操作。
vm86 進入模擬 8086 模式,使進程進入模擬 8086 處理器的模式,用于兼容一些舊的軟件。
create_module 創(chuàng)建可裝載的模塊項,用于創(chuàng)建一個可裝載的內(nèi)核模塊。
delete_module 刪除

剩余60%內(nèi)容,訂閱專欄后可繼續(xù)查看/也可單篇購買

嵌入式八股/模擬面試拷打 文章被收錄于專欄

一些八股模擬拷打Point,萬一有點用呢

全部評論

相關推薦

點贊 評論 收藏
分享
評論
5
39
分享

創(chuàng)作者周榜

更多
??途W(wǎng)
牛客企業(yè)服務