C程序的类似Hibernate的功能

时间:2011-12-19 20:44:06

标签: c assembly

我有一个跨越几十个文件的C程序。我的目标是编写一个函数,在调用时将所有全局变量保存到某个文件并退出到OS(Windows中的命令行)。稍后,我需要程序从文件加载全局变量并继续运行。

该程序是单线程exe,不加载任何DLL。

解决这个问题的直接方法是列出所有全局变量(假设我将静态转换为全局变量)并将它们转储到文件中。但这是一项繁琐的工作,因为可能有数百个,甚至数千个变量。

还有其他方法,比如转储整个数据段并稍后加载吗?即使我保存了数据段并设法将其加载回RAM,我也很难将程序变量与数据段的内存块相关联。

1 个答案:

答案 0 :(得分:0)

现在我从来没有尝试过这个,我不知道它是否会起作用但是... setjmp / longjmp保存环境并恢复它。

我认为可以使用setjmp,将struct(jmp_buf)存储在文件中。然后当应用程序再次加载时,将jmp_bug加载回RAM并运行longjmp。

你怎么看?!