変更した関数を提供するように手配することもできますがpthread_mutex_lock()
、コードは標準関数を呼び出すようにコンパイルされています。これは、標準関数に渡されたパラメーターを使用して置換が呼び出されたときに問題を引き起こします。これは丁寧な言い方です。
プリロードされた関数は、置き換える関数と同じインターフェイス(同じ名前、同じ引数in、同じ値out)を実装する必要があります。内部は必要に応じて異なる方法で実装できますが、インターフェースは同じである必要があります。
構造物についても同様です。既存のコードは、1つの特定のレイアウトで、構造に1つのサイズを期待するようにコンパイルされました。最後にフィールドを追加することで解決できるかもしれませんが、置換されていないコードはおそらく正しく機能しません。拡張構造などではなく、元のサイズの構造にスペースを割り当てます。余分な要素自体にアクセスすることはありません。おそらく完全に不可能ではありませんが、動的に変化する構造サイズを処理するようにプログラムを設計している必要があります。これにより、「できない」という答えがおそらく適切であるように、いつ実行できるかについて十分に厳しい制約が課せられます。より単純な)。
IMNSHO、LD_PRELOADメカニズムは、緊急事態用です(また、特定の問題に対する一時的なバンドエイドです)。これは、リモートで定期的に使用することを計画する必要があるメカニズムではありません。