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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章