【问题标题】:Saving session or process state in linux [closed]在linux中保存会话或进程状态[关闭]
【发布时间】:2013-11-30 19:33:21
【问题描述】:

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

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

【问题讨论】:

  • ...问题是?
  • @pfnuesel 问题是如何将进程的状态保存到内存中,然后在从内存中读取它之后恢复它。

标签: c linux bash unix libc


【解决方案1】:

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

有关更多详细信息,您可以查看检查点实用程序如何处理该问题:

【讨论】:

  • 你能解释一下吗
  • 不...我知道大局,但我不知道细节,因此链接到工作实现。我知道足够使用它们,而不是详细解释它们是如何工作的。对不起
【解决方案2】:

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

【讨论】:

  • 重播会很慢。是不是 linux/unix 提供了一些支持来做同样的事情。
猜你喜欢
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2012-11-20
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 2011-06-23
相关资源
最近更新 更多