在我的程序中,我希望在同一进程中拦截用户级别的每个系统调用(我不想使用ptrace
之类的单独进程或strace
之类的工具)。我也不想使用LD_PRELOAD。我怎样才能做到这一点?
答案 0 :(得分:4)
使用C宏。它的工作原理如下:
创建一个头文件,为您要跟踪的每个系统调用定义一个宏。示例:open()
#define open(path,flags,mode) mySpecialOpen(path,flags,mode)
创建一个包含mySpecial*()
函数的库,该函数将调用转发给系统调用。编译没有头文件的库。
使用上面的头文件编译您的代码(以及您使用的所有库)。与图书馆联系。