[ Linux]能否保存正在运行的进程到文件,重启后再继续运行

2015 年 10 月 19 日
 algas
不知道加一些限定条件会不会让这个事情变得容易:
首先程序是用 C 写的,而且只用到了 C 的标准库。
其次没有多线程和进程间通信。

其实就是想应付一下偶然的停电,毕竟把程序里所有变量输出再读入的方法太闹心了
4409 次点击
所在节点    Linux
14 条回复
Orzzzz
2015 年 10 月 20 日
你说的是休眠吗?
zhicheng
2015 年 10 月 20 日
UPS
algas
2015 年 10 月 20 日
@Orzzzz
对,非常类似,只是我只需要保存我的计算程序
algas
2015 年 10 月 20 日
@zhicheng 死机,机房空调挂了,被管理员杀了,别人的程序内存溢出了,着急算别的高优先任务等情况也在考虑范围内
little_cup
2015 年 10 月 20 日
简单粗暴的办法应该是虚拟机快照吧。
zhicheng
2015 年 10 月 20 日
@algas Good Luck
skydiver
2015 年 10 月 20 日
docker
mikale
2015 年 10 月 20 日
设计一个数据结构,然后开一个线程,时不时 flush 到硬盘上,启动程序的时候,从这个硬盘读取文件到内存。这是最简单的数据库运用的机制。
owwlo
2015 年 10 月 20 日
chinvo
2015 年 10 月 20 日
docker 或者其他虚拟化技术
algas
2015 年 10 月 22 日
@skydiver
@chinvo

@mikale
@owwlo

投奔了 docker
algas
2015 年 10 月 26 日
@skydiver
@chinvo

貌似 docker 不行的样子,我在容器中运行程序,但是在 stop 容器后,里面的程序并不是被暂停,而是被杀掉了,是不是我的姿势有问题?
onlyxuyang
2015 年 10 月 29 日
能想到的只有虚拟机快照... -_-...
Arthur2e5
2015 年 11 月 2 日
https://stackoverflow.com/questions/192838/can-you-freeze-a-c-c-process-and-continue-it-on-a-different-host 有讨论。其中提到了一点,也就是 core 的信息常常是不够的。不过看你这么说,感觉还是可以 `./heavy_computation & gcore -o core $!` 试试,到时候 `gdb` 挂上再看看能不能 `continue` 吧。

前面提到的 CRIU 看网页好像是个好主意。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/229385

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX