linux下的可以直接執行的檔案很多,它繼承了unix的對可執行檔案格式很開放的優勢。unix或者linux中,對于程式的執行實際上并沒有由核心 負責,就是說核心并不管哪些檔案格式可以執行哪些不可以執行,核心隻是簡單地将一個可執行檔案的加載和執行的任務交給了一個叫做解釋器的東西,由該解釋器負責檔案的執行,這樣可執行檔案的格式就簡單地與核心解耦了,這樣隻要提供解釋器,linux便可以執行任何格式的檔案,進而使得linux下的腳本百花 齊放,而windows卻與此相反,它非常
複雜,包括系統資料庫驗證,核心識别...現在,windows的可執行檔案主要就是pe檔案,這是核心直 接支援的(linux核心當然也有一種它直接支援的檔案格式,就是elf檔案,要不然就會出現先有雞先有蛋的問題了)。linux核心允許使用者注冊可執行檔案的識别代碼,使用者可以自己定義一個可執行檔案格式,然後寫出解釋器并将該解釋器注冊進核心,有這麼麻煩嗎?其實不必,核心專門提供了一個misc檔案 格式接口給使用者,并且導出到proc檔案系統。
在linux中,可執行檔案的識别被組織成了一個連結清單,每一種檔案格式被定義為一個結構linux_binprm:
struct linux_binprm{
本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1273436