如何使用c扫描Linux中的整个磁盘?

时间:2014-04-14 06:03:59

标签: c linux filesystems

在我的应用程序中,我需要完整磁盘扫描以递归方式查找elf文件和可执行文件。如何解决Linux c中的问题?

2 个答案:

答案 0 :(得分:3)

如果您无法使用标准find程序,请使用POSIX nftw()功能(或可能使用 ftw()函数)遍历层次结构并编写合适的访问者函数。

ELF文件的前4个字节是:

0x7F 0x45 0x4C 0x46
 DEL    E    L    F

以下是平台和版本特定的。

例如,file报告:

ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped

并且十六进制的前16个字节的输出是:

0x0000: 7F 45 4C 46 02 01 01 00 00 00 00 00 00 00 00 00   .ELF............

这与前{4}后Mahonri Moriancumer answer中显示的输出略有不同。

答案 1 :(得分:0)

  1. 从文件系统的根目录开始。
  2. 使用opendir()readdir()closedir()扫描目录。
  3. 每个条目:
    1. 按文件*" magic",
    2. 检测精灵文件
    3. 通过(struct dirent *) - > d_type。
    4. 检测子目录条目
  4. 遇到子目录时,递归到上面的2。
  5. * ELF文件魔术(文件偏移0):

     7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00