Linux -dlfcn.h

  NAME

dlfcn.h - dynamic linking

  SYNOPSIS (概要:所需头文件)

#include <dlfcn.h>

  DESCRIPTION

The <dlfcn.h> header defines at least the following macros for use in the construction of a dlopen() mode argument:

RTLD_LAZY

Relocations are performed at an implementation-dependent time.

RTLD_NOW

Relocations are performed when the object is loaded.

RTLD_GLOBAL

All symbols are available for relocation processing of other modules.

RTLD_LOCAL

All symbols are not made available for relocation processing by other modules.

The header <dlfcn.h> declares the following functions which may also be defined as macros. Function prototypes must be provided for use with an ISO C compiler.

void  *dlopen (const char *, int);

void  *dlsym (void *, const char *);

int    dlclose (void *);

char  *dlerror (void);



例子:

/*
* test_hook.c
*
单纯的测试函数功能,没有处理出错
*/
#include<dlfcn.h >
#include<stdio.h>
int main(int argc, char *argv[])
{
    void *libc;
    void (*printf_call)();

    if(libc = dlopen("libc.so.6", RTLD_LAZY)) // RTLD_LAZY
表示函数的惰性邦定
    {
        printf_call = dlsym(libc, "printf");
        (*printf_call)("hello, world/n");
        dlclose(libc);
    }
    return 0;
}
编译:
gcc -ldl test_hook.c -o test


》./test

hello,world

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值