首頁  >  文章  >  運維  >  linux核心中有main函數嗎

linux核心中有main函數嗎

百草
百草原創
2023-07-10 10:09:041666瀏覽

linux核心中有main函數,因為main函數在Linux核心程式碼的最頂端。 main函數主要負責從核心控制塊(Kernel Control Block,KCB)中取得系統的環境變量,並初始化系統所需的模組。 main函數是程式的入口,main是應用程式和作業系統之間約定好的一個介面名,所以linux中每個應用程式的第一個函數必須是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衝突的! !可能是統一作業系統與應用程式之間的接口,亦或是側面影響下main是程式入口的說法,main是應用程式與作業系統之間約定好的一個介面名稱!所以linux中每個應用程式的第一個函數必須是main。除非你改掉了核心調度的介面地方。

以上是linux核心中有main函數嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn