Solía mantener CryoPID , que es un programa que hace exactamente lo que estás hablando. Escribe el contenido del espacio de direcciones de un programa, VDSO, referencias de descriptores de archivos y estados en un archivo que luego se puede reconstruir. CryoPID comenzó cuando no había ganchos utilizables en Linux y funcionó completamente desde el espacio de usuario (en realidad, todavía funciona, dependiendo de la configuración de su distribución / kernel / seguridad).
Los problemas fueron (de hecho) sockets, señales RT pendientes, numerosos problemas de X11, la implementación de getpid () de almacenamiento en caché de glibc, entre muchos otros. La aleatorización (especialmente VDSO) resultó ser insuperable para los pocos de nosotros que trabajamos en ella después de que Bernard se alejó de ella. Sin embargo, fue divertido y se convirtió en el tema de varias tesis de maestría.
Si solo está contemplando un programa que puede guardar su estado de ejecución y reiniciar directamente en ese estado, es mucho ... mucho ... más fácil guardar esa información desde el propio programa, tal vez al dar servicio a una señal.