LD_PRELOAD という環境変数に、共有オブジェクトを指定すると 任意のプログラムを実行する時にその共有オブジェクトを読み込ませる事が出来るらしい。 そして、もし読み込ませたときに シンボル名 が衝突していたときは、 先に定義されたシンボル名が優先されるという仕様になっているらしい。 そこから考えられるのが、 LD_PRELOAD でわざと同じ名前のラッパー関数を作成して、 ロギング処理を注入するという事だ。(アスペクト指向だ!!) (今度やってみよう。) とりあえず、以下は LD_PRELOAD で同名関数を上書きできる例です。 まず、main.c 1 #include <stdio.h> 2 3 int main() { 4 puts("hello world!!"); 5 return 0; 6 } ただ単に、puts 関数を呼び出しています。 実行すると、当然のように hell