1
echo1937 2015-08-08 20:18:43 +08:00
你试试fork炸弹就知道了。
|
2
Strikeactor 2015-08-08 20:19:06 +08:00
while false什么鬼
|
3
wy315700 2015-08-08 20:24:44 +08:00
while(false) 你跑10年都不会有效果
|
4
rrfeng 2015-08-08 20:25:04 +08:00
你敢贴上这个么
:(){:|:&};: |
5
jasontse 2015-08-08 20:35:14 +08:00 via Android
会把 PID 号码吃完
|
6
supman OP |
7
ihciah 2015-08-08 20:51:22 +08:00
上次出去玩,逛到一家苹果专卖店,扔了一个炸弹也是没反应,差评
|
9
xierch 2015-08-08 21:11:26 +08:00
最坑的是 fork() 失败后还要 kill()
xl2tpd 里就有这个 bug,kill(-1, TERM),呵呵呵,不知道修好了没有 |
10
mind3x 2015-08-09 00:14:51 +08:00
fork()是copy on write的好吗...你单纯跑fork,能占的资源很有限。
Under Linux, fork() is implemented using copy-on-write pages, so the only penalty that it incurs is the time and memory required to duplicate the parent's page tables, and to create a unique task structure for the child. |
11
sleeperqp 2015-08-09 00:23:45 +08:00
fork会占完linux的进程管理资源 而不是整个内存的资源 (进程管理资源在内存中)
因为linux管理进程是用一个结构体(task_struct)数组来管理进程的 这个数组是固定的 也就说系统所管理的进程数一定 因此不断fork是会耗尽这个结构体的 pid是一个unsiged int数 是循环使用的 因此首先耗尽的应该是结构体数组 而不是pid 上面说的copy on write是对的 当你不对新fork的进程进行写操作时 这些进程所管理的内存页实际是一样的 新增的进程只需要让内存页的计数加一 然后管理的页表项指向内存也即可 因此内存消耗较小 |
12
tracyone 2015-08-09 00:25:30 +08:00 via Android
似乎有限制一个程序里面进程数的…
|
13
q5we66fg 2015-08-09 11:16:04 +08:00
每个进程好像又现在最大内存,不知道会不会swap
|
14
binyuJ 2015-08-09 15:31:22 +08:00
我在.bashrc 里加了个diff() { diff -u "$@" }
结果只要一打diff直接就不响应了,只能按电源 看kenerl log 里面就是出了无限循环内存耗尽 |