LINUX.ORG.RU

fork вызов не остановить?


0

1

Доброго времени суток уважаемые лоровцы! Будучи человеком не столь компетентным в *nix вопросах, меня с недавнего времени, со времени написания смешной проги, мучает один вопрос: Нормально ли то что самая защищенная система разрешает запускать прогу которая блокирует, по крайней мере десктоп, по средствам системного DDOS, как мне кажется :) ?? Текст проги прост до ужаса, примерно такой: for(;;) fork();

Интересны ваши мнения!

Вы изобрели форк-бомбу :) Почитайте про неё в гугле, может ulimit поможет.

самая защищенная система

Ну зачем же так толсто то?

mky ★★★★★
()

fork(); является одним из основных вызовов нашего времени, места и действия.

visual_pipe
()

Это скучно и блокируется лимитами. А с иксами можно делать много весёлых и неблокируемых вещей. Например, xlsfonts -l (можно в цикле, если шрифтов мало).

x3al ★★★★★
()

т.е. венда или бзд, или миникс, или че там еще навелосипедили форк-бомбу запустить не позволяют? :)

x0r ★★★★★
()
Ответ на: комментарий от x0r

венда или бзд, или миникс

стало интересно после такого, не знаю ))

pingwin32
() автор топика

А чего ты ожидал? Система даёт каждому из равноправных процессов одинаковые ресурсы. Запусти с nice -n 19 и наблюдай разницу.

uzbl
()

SPOSIBO

Извините, был слишком поглощен находкой чтобы погуглить :) Спасибо вам за понимание! Вопрос все же интересный.

pingwin32
() автор топика
Ответ на: комментарий от x3al

улимит - гут

Интересно почему, раз уж это не сложно блокировать, во всех популярных дистрибутивах на которых я пробовал, все же система виснет, может дело в том как ulimit функционирует?

pingwin32
() автор топика
Ответ на: улимит - гут от pingwin32

ulimit устанавливает лимиты для текущего шелла, а не для всей системы/юзера в целом.

Nao ★★★★★
()

Лет 9 назад будучи еще студентами-первокурсниками «нашли» эту бомбу, правда под виндой. Но,в отличие от Linux, под виндой от нее не было спасения. Ресурсы системы съедались за считанные секунды и оставалось только нажать ресет. Под Linux и другими *nix всегда остается родительский процесс, который можно убить вместе со всеми потомками и все сразу прекратится. Тут главное успеть :)

delete83 ★★
()
Ответ на: комментарий от delete83

> Под Linux и другими *nix всегда остается родительский процесс, который можно убить вместе со всеми потомками и все сразу прекратится.

O RLY

geekless ★★
()
Ответ на: комментарий от geekless

>O RLY

А вроде должно получится, если консоль уже была открыта скажем с башем - там вместо /usr/bin/kill исполняется свой, встроеный kill. Поэтому для посыла сигнала fork не нужен.

zloelamo ★★★★
()
Ответ на: комментарий от zloelamo

fork тут вообще ни при чем. Это какое-то распространенное нелепое заблуждение, что при убийстве родительского процесса, дочерние тоже должны автоматически дохнуть.

#!/bin/sh

# Happy killing!

while true ; do
  nohup $0 &
done
geekless ★★
()
Ответ на: комментарий от geekless

nohup это читерство, но лимиты всё-равно спасут.

Lumi ★★★★★
()
3 июня 2011 г.
Ответ на: комментарий от geekless

Если родительский процесс еще жив, то сработает

indie
()
Ответ на: комментарий от geekless

>Это какое-то распространенное нелепое заблуждение, что при убийстве родительского процесса, дочерние тоже должны автоматически дохнуть.

Да, помню, как я чуть сервер Perl-скриптом не положил — http://www.linux.org.ru/jump-message.jsp?msgid=5629660&cid=5631470

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Команды pgrep я тогда не знал, так что kill `ps ax|grep perl...`, но, блин, где-то в середине списка убиваемых была и сама эта команда.

Кстати, можно было написать grep [p]erl, чтобы grep не ловился в список. :)

geekless ★★
()
Ответ на: комментарий от geekless

>можно было написать grep [p]erl

Гениально! :D

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.