linux內核中有main函數,因為main函數在Linux內核代碼的最頂端。main函數主要負責從內核控制塊(Kernel Control Block,KCB)中獲取系統的環境變量,并初始化系統需要的模塊。main函數是程序的入口,main是應用程序和操作系統之間約定好的一個接口名,所以linux中每個應用程序的第一個函數必須是main。
本文操作環境:linux 5.18.14系統、DELL G3電腦。
linux內核有main函數;main函數是程序的入口,main是應用程序和操作系統之間約定好的一個接口名,所以linux中每個應用程序的第一個函數必須是main。
Linux內核是操作系統的核心,它負責為系統執行驅動程序、啟動任務,處理錯誤以及管理內存等所有操作系統底層功能。本文將介紹Linux內核中重要的main函數。
main函數在Linux內核代碼的最頂端。main函數主要負責從內核控制塊(Kernel Control Block,KCB)中獲取系統的環境變量,并初始化系統需要的模塊(內存管理、設備驅動等)。
C語言規定了main函數的參數只能有兩個,一個是argc,一個是argv并且,argc只能是整數,第二個必須是指向字符串的指針數組
由于main函數不能被其它函數調用, 因此不可能在程序內部取得實際值。那么,在何處把實參值賦予main
函數的形參呢? 實際上,main函數的參數值是從操作系統命令行上獲得的。當我們要運行一個可執行文件時,
在DOS提示符下鍵入文件名,再輸入實際參數即可把這些實參傳送到main的形參中去。DOS提示符下命令行的一般形式為:
C:>可執行文件名 參數 參數……; 但是應該特別注意的是,main 的兩個形參和命令行中的參數在 位置上不是一一對應的
argc: 參數表示命令行中參數的個數(注意 文本名本身也是一個參數),
rgc的值是在輸入命令行時由系統按實際參數的個數自動賦予的
argv :參數是字符串指針數組,其各元素值為命令行中各字符串(參數均按字符串處理)的首地址。 指針數組
的長度即為參數個數。數組元素初值由系統自動賦予
linux內核源碼之main函數解析
1、main函數是C語言的入口,這句話沒錯;但是這句話僅僅是一個約定,而非一個亙古不變的鐵律!從程序的更為本質的匯編代碼來看,只是大家約定匯編初始化完了后,跳到一個名字叫”main”的標號處;言外之意就是這個標號也是可以改名的,比如linux的C語言入口就是start_kernel();從這個標號地址后就是C語言的天下了。用main這個名字僅僅是因為大家的約定而已,不遵守約定能玩的轉也行啊,就像蘋果充電線啥的都和別人不一樣。
2、在編譯時是不存多個main函數的!每個應用程序雖說都有一個main函數(從應用程序來看應用程序的入口是main函數哦);但是應用程序都是獨立編譯的,不會一起編譯,操作系統內核就更不可能和應用程序一起編譯了!所以根本不存在多個main沖突的?。】赡苁墙y一操作系統與應用程序之間的接口,亦或是側面影響下main是程序入口的說法,main是應用程序和操作系統之間約定好的一個接口名!所以linux中每個應用程序的第一個函數必須是main。除非你改掉了內核調度的接口地方。
以上就是linux內核中有main函數嗎的詳細內容,更多請關注www.92cms.cn其它相關文章!