Если я бег классических оргий forkbomb:Почему C-forkbombs не работают как bash?
:(){ :&:&};:
моей система зависание через несколько секунд.
Я попытался написать forkbomb в C, вот код:
#include <unistd.h>
int main()
{
while(1) {
fork();
}
return 0;
}
Когда я запускаю его система становится менее чувствительной, но я могу убить этот процесс (даже после того, как минут), просто нажав ^C
.
Приведенный выше код отличается от оригинального Баш forkbomb я отправил: это что-то подобное:
:()
{
while true
do
:
done
}
(я не проверял, не знаю, если это было бы похмелья системы).
Так что я также попытался реализовать оригинальную версию; здесь код:
#include <unistd.h>
inline void colon(const char *path)
{
pid_t pid = fork();
if(pid == 0) {
execl(path, path, 0);
}
}
int main(int argc, char **argv)
{
colon(argv[0]);
colon(argv[0]);
return 0;
}
Но все же ничего: я могу запустить его, а затем легко его убить. Это не висит моя система.
Почему?
Что такого особенного в forkbombs bash? Это потому, что bash использует намного больше памяти/процессора? Поскольку процессы bash требуют гораздо больше системных вызовов (например, для доступа к файловой системе), чем у меня?
Как говорится, научные прорывы редко сопровождаются «Эврика!», Которые обычно сопровождаются «Хм, это странно». –