Se você quiser reproduzir esse erro, provavelmente poderá simplesmente iniciar uma fork fork com o primeiro pai saindo para voltar ao seu shell:
Você provavelmente desejará garantir que seu sistema aplique um limite de processo antes de fazer isso. Caso contrário, você pode simplesmente congelar a máquina em vez de obter um shell no qual possa digitar coisas e informar que você não tem mais processos deixou de fazer qualquer coisa. Você vai querer verificar quantos processos você está usando normalmente primeiro para descobrir o limite a ser definido.
No FreeBSD, você editará /etc/login.conf
e alterará o maxproc
on default
e então o definirá como unlimited
on root
.
Na maioria das distribuições Linux, você editará /etc/security/limits.conf
e adicionará uma linha na parte inferior assim: * hard nproc nnn
, em que nnn
é o número de processos.
Então make
esta simples bifurcação e execute-a:
#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
}