Linux學習 — Linux的可執行檔

來源:互聯網
上載者:User

Linux的檔案系統不像Windows用的是檔案的副檔名來區分檔案的類型,一般Linux區分檔案類型是靠檔案屬性,也就是二進位檔案的最開始的4個字元。
linux是識別檔案頭和檔案屬性來開啟一個檔案的。你就算把可執行檔bin命名成.txt,打檔案名稱,照樣可以運行,與副檔名無關

用ls -F命令,後買帶“*”的就是可執行檔。

 

下面是一些相關資訊的摘錄:

linux下,當你使用./xxx運行一個程式時,首先是SHELL來接管你的輸入,然後用fork派生子進程,最後用execv系列將你的那個程式的代碼交給核心

1。檢查你啟動並執行檔案的屬性,其屬性在它的I節點中描述,如果你的那個檔案不是可執行檔屬性,結果就會拒絕執行,如果有可執行檔屬性,但可執行檔許可權高於你目前正在使用的使用者的許可權,拒絕執行
2。檢查是SHELL檔案嗎?如果是,調用相應的SHELL來解析你的這個指令檔
3。是ELF檔案格式嗎??是coff檔案格式嗎?是a.out檔案格式嗎?如果是其中任何一種,並且當前的LINUX核心都支援這三種檔案格式,那麼就由作業系統核心分析你的檔案格式,去掉檔案頭資訊,將真正的代碼,資料等載入進記憶體(實際過程並不是這樣的,只不過為了描述簡單,所以省略了很多細節,更多詳細說明,請參見核心中的execv系統調用)...
4.等待系統的進程調度,當核心選中你的那個程式的時候,你的那個程式就得到運行了

LINUX下的副檔名是形同虛設的,只是一種習慣,為了給使用者更好的理解其作用,比如設定檔一般都以.conf結尾,“文字檔”一般都以.txt結尾(主要是為了跟WINDOWS使用者習慣相接近),ELF檔案不用副檔名,所以當你說可執行檔的時候千萬不要說是exe檔案,那是很不嚴格的說法,只說明你僅是一個WINDOWS程式員而已。

Linux的載入程式一般是根據內嵌在可執行檔開頭的“magic序列”(一個特殊位元組序列)來識別檔案,有時也會通過檔案名稱的一些特性。例如,Java編譯處理常式可以保證其檔案名稱以.class結尾,並且檔案起始前四個位元組是 0xcafebabe,這是Java標準所定義的。下面是2.4版本核心在Intel體系下所提供的二進位處理常式,理論上,Linux靈活到足以處理幾乎所有的目標檔案格式。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.