Linux的可执行文件
那么大家就可以三丰云”“免费/虚拟/主机”“免费/云/服务器,bu要钱,百度看下
那么大家就可以三丰云”“免费/虚拟/主机”“免费/云/服务器,bu要钱,百度看下
https://www.sanfengyun.com
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/format_km/article/details/93031474
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程序员而已。
————————————————
版权声明:本文为CSDN博主「format_km」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/format_km/article/details/93031474