出于学术目的,我想在我的 bash 终端上重现错误消息“没有更多进程”。例如:
$cp file1.txp file2.txt
bash: no more processes
我怎样才能做到这一点?
答案1
如果你想重现这个错误,你可能只需要启动一个 fork bomb,让第一个父进程退出,让你回到你的 shell 中:
您可能希望在执行此操作之前确保您的系统应用了进程限制,否则您可能只会冻结机器,而不是获得一个可以输入内容的 shell,并让它报告您没有剩余进程可以执行任何操作。您需要先检查您通常使用的进程数,以确定要设置的限制。
在 FreeBSD 中,您将编辑/etc/login.conf
并更改maxproc
ondefault
然后将其设置为unlimited
on root
。
在大多数 Linux 发行版中,您会/etc/security/limits.conf
在底部编辑并添加一行,如下所示:* hard nproc nnn
,其中nnn
是进程数。
然后make
这个简单的叉子炸弹并运行它:
#include <unistd.h>
#include <stdlib.h>
int main()
{
int pid;
pid = fork();
if (pid) {
// parent
exit(0);
} else {
// child
while (1) {
fork();
}
}
return 0; // we'll never get here
}