# include <unistd.h>
int main()
{
while(1) { fork(); }
}
一番シンプルな形だとこんな形。
ひたすらForkしてメモリを食いつぶしたりプロセステーブルを食いつぶす。
だいたいの場合はこのままマシンごと落ちたり固まるものだけど、MacだとForkBombを受けても生き残るケースがある。
ForkBombを「間違って」起動してしまった場合には慌てず騒がずシェルからForkBombをkillallする。
ただし、普通にkillallを叩こうとしてもプロセステーブルがいっぱいなのでforkできないと怒られる。
ので、exec killallを叩く訳だけど、やっぱりそれもだめ。
killallが殺していくかたわらForkBombが倍々ゲームで増えて行くのでまたすぐプロセステーブルが埋まってしまう。
ForkBombが起動してしまったら、まず、 exec killall -s SIGSTOP ForkBomb を叩いて一旦停止。
それから別のシェルで exec killlall -s SIGKILL ForkBomb で殺す。
シェルを2個以上開いていなかったらご愁傷さまかも。
念のため、シェルが余っているようなら、1回目のkillallを叩いた後にもう一回 exec killall -s SIGSTOP ForkBomb させておくとなお安心。