В академических целях я хотел бы воспроизвести сообщение об ошибке "больше никаких процессов" на моем терминале bash. Например:
$cp file1.txp file2.txt
bash: no more processes
Как я могу это сделать?
Если вы хотите воспроизвести эту ошибку, вы можете просто запустить бомбу с первым родительским выходом, чтобы вернуть вас в свою оболочку:
Вы, вероятно, захотите убедиться, что ваша система применяет ограничение процесса, прежде чем делать это, в противном случае вы можете просто заморозить машину, а не получить оболочку, в которой можно набирать вещи и сообщать, что у вас больше нет процессов, которые нужно сделать что-нибудь. Сначала вы захотите проверить, сколько процессов вы обычно используете, чтобы выяснить, какой лимит установить.
В FreeBSD, вы будете редактировать /etc/login.conf
и изменить maxproc
по default
, а затем установить его на unlimited
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
}