天天看点

linux中的可执行文件

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

继续阅读