如何使用C语言函数识别文件是否是elf文件?

在我的程序中,我想确定文件是否是ELF(可执行和可链接格式)类型。 如何使用C语言函数识别文件是否是elf文件?

如果您要做的唯一事情是测试文件是否为ELF,则读取前16个字节以检查文件标识。 前四个字节将等于{0x7f, 'E', 'L', 'F'} 。 剩余的字节可能会有所不同,但检查它们将帮助您更加确定该文件是elf。 有关更多详细信息,请参见elf(3)手册页。

该手册页提供了一般解析ELF文件的足够信息,但如果您想做的不仅仅是检查格式,那么您应该使用库。 查看Elf工具链和二进制文件描述符库 。

更新:另一个替代方案是libmagic(3) ,它将为您读取ELF标题。 如果你只对ELF感兴趣,这可能有点过头了,但是libmagic也知道几乎所有值得了解的文件格式。