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

ttw*_*ard 4 c linux elf

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

Adr*_*ala 12

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

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

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