保存进程的内存供以后使用?

Unk*_*own 26 operating-system process

是否可以暂停进程,将内存内容保存到文件中,然后重新加载文件以便继续执行该程序?

编辑 我一直在读这个:

http://en.wikipedia.org/wiki/Setcontext

是否可以转储结构的内容,并以某种方式强制malloc分配相同的内存区域?

sha*_*oth 21

从技术上讲,它是可能的,但它也需要保存所有系统分配的资源状态 - 比如文件解析器,然后恢复它们.所以这是一项具有挑战性的任务.

实现您想要的最简单方法是使用VMWare等虚拟机.暂停它时,实际上将整个机器状态与所有正在运行的程序一起保存.


Gui*_*ume 7

这通常称为持续延续.像SmallTalk和SBCL这样的语言对持久连续有一流的支持.大多数语言没有.


fuz*_*fle 5

根据您的要求和操作系统,您可以尝试强制进行核心转储

除了在 gdb 中,我从未尝试过实际加载核心转储程序备份。正如sharptooth指出的那样,您打开的任何文件或不在程序内存中的任何其他状态似乎都将丢失。

另一种方法是简单地序列化您需要在程序中写入磁盘的状态。这很糟糕,但它可能是最可靠的方法,除非您满足于暂停程序的执行。这可以通过操作系统的线程库来完成。或者正如一张海报用你的外壳指出的那样。