说明:fork系统调用拦截

时间:2016-07-07 08:38:05

标签: c segmentation-fault fork system-calls

我无法理解基本拦截fork系统调用的以下代码的工作

pid_t fork(void)
{
    pid_t result;
    if (!actual_fork) {
        const int saved_errno = errno;

        *(void **)&actual_fork = dlsym(RTLD_NEXT, "fork");
        if (!actual_fork) {
            errno = EAGAIN;
            return (pid_t)-1;
        }

        errno = saved_errno;
    }

    result = (*actual_fork)();
    if (!result && commfd != -1) {
        struct message msg;
        notify(TYPE_FORK, &msg, sizeof msg);
    }

    printf("\n%d",result);
    fflush(stdout);
    return result;
}

使用LD_PRELOAD导出以下截获的代码时,任何调用嵌套fork的进程都会抛出 Segmentation fault

0 个答案:

没有答案