Linux -dlfcn.h

  NAME

dlfcn.h - dynamic linking

  SYNOPSIS (概要:所需头文件)

#include

  DESCRIPTION

The 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 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
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

 

 

你可能感兴趣的:(Linux,C/C++编程)