Процессный потоп на Linux
Я попробовал этот эксперимент на моем рабочем столе Linux:
int main()
{
while(1)
fork();
return 0;
}
Я запустил эту программу как обычный пользователь (не root), я был удивлен, обнаружив, что она сбила мою систему, она перестала отвечать. Я надеялся,что из-за исчерпания ресурсов мой процесс был бы убит, но, очевидно, это не так. Есть идеи, почему?
Спасибо, Сид.
PS: Это был мой офис Linux box, на котором я экспериментировал из дома, я надеюсь, что все все будет в порядке, когда я его перезапущу завтра....
3 ответа:
Вы заново изобрели вилочную бомбу.
Я думаю, что большинство дистрибутивов Linux не устанавливают лимиты ресурсов для каждого пользователя по умолчанию. Вы можете настроить их, конечно, но, вероятно, нет.
Машина будет в порядке после перезагрузки-если только использование процессора не вызвало проблем с перегревом.
Чтобы обычный пользователь не создавал слишком много процессов, необходимо добавить конфигурацию в /etc/security/limits.conf
Вы можете использовать
ulimit
, чтобы установить ограничения, которые будет применяться к вашей текущей сессии, если вы думаете, что собираетесь запустить программу, которая может запустить слишком много процессов или использовать слишком много других ресурсов.
Вы можете найти материалы об этом вВикипедии .