Is there a way to swap out the implementation of a shared library function after the library has already been loaded into a running process? I'm looking for behavior like
LD_PRELOAD would normally get you, but for an existing process.
No, not really. You can't easily replace a library with another one inside some running processes (relocation information and addresses would be different)....
However, if you design that program and can improve its source code, you might do other tricks (e.g. dlopen(3)...)
Read wikipage on dynamic software updating.