您可能知道很多程序,例如一些密码破解程序,我们可以在它们运行时停止它们,当我们再次运行程序时(无论是否输入相同的输入),它们都能够从他们继续的地方继续离开了.我想知道这些程序使用的是哪种技术?
[编辑]我正在编写一个主要基于递归函数的程序.据我所知,我认为在我的程序中保存这些状态是非常困难的.是否有任何技术,以某种方式,保存我的程序中涉及的堆栈内容,函数调用和数据,然后当它重新启动时,它可以运行,就好像它没有被停止?这只是我心中的一些概念,所以请原谅我,如果它没有意义......
每个程序都会有所不同。对于像暴力破解密码这样简单的事情,真正需要保存的是最后尝试的密码。对于其他应用程序,您可能需要存储多个数据点,但这实际上也仅此而已:保存和加载重建您所在位置所需的最少量信息。
另一种常见的技术是保存整个程序状态的图像。如果您曾经玩过具有保存状态功能的游戏机模拟器,那么他们就是这样做的。Python 中也存在类似的 pickling 技术。如果环境足够稳定(即:没有变化的指针),您只需将整个应用程序内存状态复制到二进制文件中即可。当您想恢复时,将其复制回内存并再次开始运行。这为您提供了近乎完美的状态恢复,但它是否完全可能高度依赖于环境/语言。(例如:如果没有操作系统的帮助,或者如果它们是在考虑到这一点的情况下非常仔细地构建的,大多数 C++ 应用程序都无法做到这一点。)