¿Cómo puede una biblioteca compartida (.so) llamar a una función que se implementa en su programa de carga?

Tengo una biblioteca compartida que implementé y quiero que .so llame a una función que está implementada en el programa principal que carga la biblioteca.

Digamos que tengo main.c (ejecutable) que contiene:

void inmain_function(void*);
dlopen("libmy.so");

En el my.c (el código para el libmy.so) quiero llamarinmain_function:

inmain_function(NULL);

¿Cómo puede la biblioteca compartida llamarinmain_function independientemente del hechoinmain_function Se define en el programa principal.

Nota: quiero llamar a un símbolo en main.c desde my.c no al revés, que es el uso común.

Respuestas a la pregunta(4)

Su respuesta a la pregunta