LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1776|回复: 8

[请教]linux是如何识别可执行程序和脚本文件的?

[复制链接]
发表于 2007-6-8 21:12:19 | 显示全部楼层 |阅读模式
我们知道,要运行一个可执行程序或者一个脚本程序,只要输入相应的文件名就行了。

我的问题:
Linux是通过什么机制来识别两者的?

请教各位!
发表于 2007-6-8 23:28:10 | 显示全部楼层
你可以参考一下<linux programming by example>第8页。
在GNU/Linux系统下,ELF文件是比较常用的可执行文件。
引用:The kernel recognizes that an executable file contains binary object code by looking at the first few bytes of the file for special magic numbers.These are sequences of two or four bytes that the kernel recognizes as being special.
对于EFL文件,文件开头的4个字符是"\177ELF".

我想在脚本文件的开头,也会有相应的识别字符。
所以,
我想系统是根据文件开头的几个字符也识别不同的文件的。
回复 支持 反对

使用道具 举报

发表于 2007-6-9 00:26:20 | 显示全部楼层
Generally the first line of bash scripts is:

#!/bin/sh
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-9 09:18:13 | 显示全部楼层
Post by moonbug1984
你可以参考一下<linux programming by example>第8页。
在GNU/Linux系统下,ELF文件是比较常用的可执行文件。
引用:The kernel recognizes that an executable file contains binary object code by looking at the first few bytes of the file for special magic numbers.These are sequences of two or four bytes that the kernel recognizes as being special.
对于EFL文件,文件开头的4个字符是"\177ELF".

我想在脚本文件的开头,也会有相应的识别字符。
所以,
我想系统是根据文件开头的几个字符也识别不同的文件的。
恩 ,有道理。我 想我应该剖析一下两种文件的内部形式。
回复 支持 反对

使用道具 举报

发表于 2007-6-9 11:38:25 | 显示全部楼层
楼主去看一下 file 命令吧
回复 支持 反对

使用道具 举报

发表于 2007-6-13 15:10:28 | 显示全部楼层
我用UltraEdit看了下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2007-6-13 17:06:57 | 显示全部楼层
只是为了看看二进制格式就用 UltraEdit 还可以接受,只是为了截个图就用 QQ 那也可以忍,可是只是为了用这些工具就跑到 Windows 下,这可是不能忍的
回复 支持 反对

使用道具 举报

自由狼-台风 该用户已被删除
发表于 2007-6-19 00:39:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2007-6-21 00:22:30 | 显示全部楼层
答曰:MAGIC NUMBER
ELF
#! /bin/bash

...汗 用得着吗? 直接用vi查看executable program:
^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@^P<84>^D^H4^@^@^@Ü
不就看见ELF吗?哈哈~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表