在我的程序中,我想拦截同一进程中用户级别的每个系统调用(我不想使用单独的进程,例如 ptrace
或工具,例如 跟踪
)。我也不想使用 LD_PRELOAD。我怎样才能做到这一点?
最佳答案
使用 C 宏。它是这样工作的:
创建一个头文件,为您要跟踪的每个系统调用定义一个宏。示例:
open()
#define open(path,flags,mode) mySpecialOpen(path,flags,mode)
创建一个库,其中包含将调用转发到系统调用的
mySpecial*()
函数。编译没有头文件的库。使用上面的头文件编译您的代码(以及您使用的所有库)。与图书馆的链接。
关于c - 在没有 LD_PRELOAD 的情况下在用户级别拦截系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515517/