如何包含C库<;系统/mman_对等h>;

如何包含C库<;系统/mman_对等h>;,c,include,mmap,C,Include,Mmap,我想把我在那里找到的图书馆包括进去 我没有找到很多关于曼纽的信息。当我试图嵌入库时,gcc编译器抛出了一个错误。可能的问题是什么?mmap\u peer是一个非标准的QNX函数。Linux没有它。要在Linux上映射另一个进程地址空间中的内存,您需要改为ptrace目标进程,并强制它执行mmapsyscall本身。如果您这样做,GDB就是这样做的:GDB-ex'调用mmap(04096,3,33,-1,0)'--pid=12345--batch 如果您想从自己的程序中执行GDB正在执行的操作,则

我想把我在那里找到的图书馆包括进去
我没有找到很多关于曼纽的信息。当我试图嵌入库时,gcc编译器抛出了一个错误。可能的问题是什么?

mmap\u peer
是一个非标准的QNX函数。Linux没有它。要在Linux上映射另一个进程地址空间中的内存,您需要改为
ptrace
目标进程,并强制它执行
mmap
syscall本身。如果您这样做,GDB就是这样做的:
GDB-ex'调用mmap(04096,3,33,-1,0)'--pid=12345--batch


如果您想从自己的程序中执行GDB正在执行的操作,则需要使用特定于体系结构的API,因为您在问题中没有提到体系结构,所以我无法向您展示这些API。

这是一个非标准标题。我希望它只在QNX上可用。那是你编译的操作系统吗?(如果没有,你为什么要查阅QNX特定的文档?)我正在使用linux ubuntu…我不知道QNX是一个操作系统,这就是问题:)因此,我不可能告诉你这个API在linux上不可用。你想要什么?可能有更好的方法来实现这一点。我正在尝试代码注入,但问题是,新函数可能比现有的func更大。所以我想用mmap分配一个新页面,在那里用ptrace插入一个新函数,然后用jmp指令更改旧函数的开始(新函数的开始)。如果你回答其中的一些问题,会有很大帮助。我是否需要首先将mmap调用插入目标进程?如果我将mmap的第一个参数保留为0,它是返回免费页面还是应该手动查找免费虚拟地址?还有一个与mmap共享内存页的选项(MAP_SHARED),您对此有何看法?