我有一个运行少量进程的软件(C++)(每个进程本身就是一个主要系统)。是否有可能导致多进程休眠(核心转储?)?
的过程通过XML-RPC有相互通信或更高版本提升ASIO
我希望能够冻结或在某一时刻停止所有进程,并能够提高系统(所有进程)与之前的冬眠状态相同。
我怎么能在C++中做到这一点?
由于过程相互通信这是否可行?
我有一个运行少量进程的软件(C++)(每个进程本身就是一个主要系统)。是否有可能导致多进程休眠(核心转储?)?
的过程通过XML-RPC有相互通信或更高版本提升ASIO
我希望能够冻结或在某一时刻停止所有进程,并能够提高系统(所有进程)与之前的冬眠状态相同。
我怎么能在C++中做到这一点?
由于过程相互通信这是否可行?
除非你是一个操作系统 - 否,这是不可能的。
你需要做的是确保每个进程都可以为自己做(例如:编写一个功能,允许保存和恢复每个进程的状态),并且还适应不一致在通信中(例如 - 确保消息上的ACK,并在没有接收到ACK的情况下重新发送,如果保存状态)。
如果做得对,这是可行的,但当然,说起来容易做起来难,而且假定你实际上可以改变流程。
大的情况是,您需要让系统达到稳定的一致状态,然后以某种可重新创建的形式保持该状态。
你原则上可以编写这样的代码,难度取决于你的应用程序。你需要弄清楚的东西,如:
我认为这是重要的编码工作,难度取决于应用程序的复杂程度和实现的质量。在一个结构良好的应用程序中,这种重要的“replumbing”练习通常会出人意料地简单。
那么,
其他答案都很好。还有另一种相当“异国情调”的方式可以很快解决这个问题,但它可能是过度的或不适合的。但是谁知道?所以,以防万一...
我建议你运行你的程序到虚拟机(我的意思是例如一个Linux与VMware),并暂停/唤醒这个虚拟机随意。
如果您使用的是不受此类操作干扰的进程间通信方法,它可能会工作并为您节省大量时间。
祝你好运。
在共享虚拟机中运行所有内容并休眠整个虚拟机可能会更容易。 – MSalters