Hibernate-подобный функционал для программы на C - PullRequest
2 голосов
/ 20 декабря 2011

У меня есть программа на C, охватывающая десятки файлов. Моя цель - написать функцию, которая при вызове сохранит все глобальные переменные в некотором файле и выйдет в ОС (командная строка в windows). Позже мне понадобится программа для загрузки глобальных переменных из файла и продолжения работы.

Программа представляет собой однопоточный exe-файл, который не загружает никаких библиотек DLL.

Простой способ решить эту проблему - составить список всех глобальных переменных (при условии, что я преобразую статику в глобальные) и просто сбросить их в файл. Но это утомительная работа, поскольку, вероятно, существуют сотни, если не тысячи переменных.

Есть ли другой способ, скажем, выгрузить весь сегмент данных и загрузить его позже? Даже если я сохраню сегмент данных и смогу загрузить его обратно в ОЗУ, у меня будут проблемы с привязкой переменных программы к фрагментам памяти сегмента данных.

1 Ответ

0 голосов
/ 20 декабря 2011

Теперь я никогда не пробовал этого, и я не знаю, сработает ли это, но ... setjmp / longjmp сохранит среду и восстановит ее.

Я думаю, что было бы возможно использовать setjmp, сохранить структуру (jmp_buf) в файле. Затем, когда приложение загрузится снова, загрузите jmp_bug обратно в RAM и запустите longjmp.

Что ты думаешь?!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...