在linux中保存会话或进程状态

时间:2013-11-17 18:20:46

标签: c linux bash unix libc

我必须为我的项目创建一个功能,例如保存会话,并在将来从同一位置继续恢复它。所以我需要知道如何保存进程的状态,然后从磁盘读取并在之后恢复它。

PS。该应用程序是一种语言的交互式shell,我需要扩展它包括一个保存会话和恢复会话。但是我们希望代码足够通用,也可以在其他地方使用。

2 个答案:

答案 0 :(得分:1)

这是一项非常具有挑战性的任务。基本思想是用一个信号中断进程,此时操作系统将所有寄存器(包括指令指针)的状态置于内存中,如果你的shell已经产生了你要中断的进程,你可以访问它们。

有关更多详细信息,您可以了解检查点工具如何处理该问题:

答案 1 :(得分:0)

除了“将程序的整个状态保存到文件并从恢复中加载”之外,这一点很难回答。这可能非常棘手,因为您可能需要恢复文件句柄和套接字之类的东西,如果在挂起状态期间事情发生了变化,甚至可能无法恢复。但是,您可能只需要支持少于此的内容,并且只保存接近先前状态所需的信息(例如,保存要加载的程序文件列表,或保存用户的命令历史记录并重放它等)。