Я имел обыкновение поддерживать CryoPID , которая является программой, которая делает именно то, о чем вы говорите. Он записывает содержимое адресного пространства программы, VDSO, ссылки на файловые дескрипторы и состояния в файл, который впоследствии может быть восстановлен. CryoPID запускался, когда в самом Linux не было никаких полезных хуков, и работал полностью из пользовательского пространства (на самом деле, он все еще работает, в зависимости от настроек вашего дистрибутива / ядра / безопасности).
Проблемами были (в действительности) сокеты, ожидающие сигналы RT, многочисленные проблемы X11, реализация getpid () для кэширования glibc и многие другие. Рандомизация (особенно VDSO) оказалась непреодолимой для тех немногих, кто работал над ней после того, как Бернард ушел от нее. Однако это было весело и стало темой магистерской диссертации.
Если вы просто рассматриваете программу, которая может сохранить свое рабочее состояние и перезапустить его непосредственно в это состояние, гораздо проще… гораздо проще просто сохранить эту информацию из самой программы, возможно, при обслуживании сигнала.