重现“没有更多进程”错误

重现“没有更多进程”错误

出于学术目的,我想在我的 bash 终端上重现错误消息“没有更多进程”。例如:

$cp file1.txp file2.txt
bash: no more processes

我怎样才能做到这一点?

答案1

如果你想重现这个错误,你可能只需要启动一个 fork bomb,让第一个父进程退出,让你回到你的 shell 中:

您可能希望在执行此操作之前确保您的系统应用了进程限制,否则您可能只会冻结机器,而不是获得一个可以输入内容的 shell,并让它报告您没有剩余进程可以执行任何操作。您需要先检查您通常使用的进程数,以确定要设置的限制。

在 FreeBSD 中,您将编辑/etc/login.conf并更改maxprocondefault然后将其设置为unlimitedon 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
}

相关内容