【发布时间】:2017-03-09 03:51:33
【问题描述】:
考虑这样的情况: 有一个简单的程序:
int main()
{
for (int i = 0; i < 100; i++) {
if (i == 50){
// ... dump state of program somewhere
}
cout << i << " ";
}
return 0;
}
是否可以通过将程序状态存储到磁盘上的文件来“保存”程序状态?例如,几周后我想从文件中加载这个状态,它将从最后一个停止位置继续工作(它将打印50 51 ...)。
【问题讨论】:
-
最简单的方法是重写你的程序,让它接收一个特定的信号,并将它自己的状态保存在某个地方。然后将检查后续运行的状态。
-
你想“继续”做什么?你说的冻结是什么意思?你的程序是做什么的?
-
你需要的技术叫做serialization。
-
如果“冻结”程序的事件在内部是已知的——即使在编译时——会有一个答案,如果有一个未知的时刻程序将被“冻结”,则会有另一个答案.
-
您可以生成故障转储,但这是特定于编译器的,可能不包含整个程序状态,尤其是在发布版本时。
标签: c++ linux serialization