我试图拦截fork系统调用,并通过库调用调用hooked forked。
库的代码:
#define _GNU_SOURCE
#include <dlfcn.h>
//#include <unistd.h>
#include <stdio.h>
int fork()
{
printf("This fork is Hooked \n");
int (*actual_fork)();
actual_fork = dlsym(RTLD_NEXT,"fork");
int x;
if(x=fork())
//if(x=(*actual_fork)())
{
printf("Priniting from parent\n");
return x;
}
else
{
printf("printing from child");
return x;
}
}
对fork的下一次调用仍在调用unistd的fork,即使我已将include包含在该文件中。
使用actual_fork调用它可以正常工作。但我不明白为什么下一次调用fork不会调用这个文件的叉子?