fork系统调用的系统调用拦截

时间:2016-07-07 06:40:42

标签: c fork system-calls dlsym

我试图拦截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不会调用这个文件的叉子?

0 个答案:

没有答案