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

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值