是否有 C 函数来获取文件数据段的大小?

Is there a C function to get the size of a file's data segment?

我想知道是否有可用于获取另一个可执行文件的数据段大小的 C 函数?例如,像 Linux 中的 size 实用程序一样工作的东西? size 的输出包括我想要的信息,数据段大小;例如,它可能看起来像:

text    data    bss     dec     hex     filename
294880  81920   11592   388392  5ed28   ranlib

看起来没有一个函数可以获取它,但是源代码的大小非常小(~500 行)。你要找的是这里吗? https://github.com/pathscale/binutils/blob/master/binutils/size.c

使用elf.h你就拥有了所有你需要的数据结构。跟随主 ELF header 到程序 headers,然后遍历它们。 PT_LOAD header(s) 具有写入权限 is/are 数据段。