Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
 
1 / 1 / 0
Регистрация: 15.11.2015
Сообщений: 30
1

Как именно работает Fork бомба

10.02.2020, 00:02. Просмотров 190. Ответов 1
Метки нет (Все метки)

Доброго времени суток, я новичок и не особо знаком с shell скриптами, но вот попалась мне такая функция
PowerShell
1
:(){ :|: & };:
. Прогуглив форумы, я понял, что на самом деле это функция которая вызывает две копии своей функции и тд, но вопрос как именно она это делает? Насколько я знаю pipe(|) берет output от функции и передает его в input другой, но у нашей функции ведь нет output-а и input-а, что же тогда происходит на самом деле? Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2020, 00:02
Ответы с готовыми решениями:

Как именно работает директива using?
Здравствуйте, уважаемые форумчане! Я изучаю основы языка C++ по книге С.Прата. Наткнулся на такой...

Как работает метод Post, как именно он пересылает данные
Всем доброго времени суток. Прошу прощения если я опять ошибся разделом и уже задолбал весь форум...

Как работает функция GetAsyncKeyState, как проверить её результат(именно наименьший бит)
#include "stdafx.h" #include <Windows.h> int _tmain(int argc, _TCHAR* argv) { SHORT s = 0;...

Не могу понять алгоритм. Как именно он работает
Не могу понять сам алгоритм. Как именно он считает. Само задание: дано n блоков, какое...

1
1244 / 518 / 186
Регистрация: 28.06.2015
Сообщений: 1,171
Записей в блоге: 16
10.02.2020, 09:37 2
Цитата Сообщение от Kit4 Посмотреть сообщение
но у нашей функции ведь нет output-а и input-а
Здесь вывод первой функции выполненой в текущей оболочке перенаправляется в пайп тоесть баш открывает для выполнения
подоболочку, связывает stdout текущей с stdin подоболочки и запускает в ней копию функции в фоне, но поскольку в функцию параметры передаются не через stdin то она спокойно выполняется открывая рекурсивно другие подоболочки. Получается цепная реакция
Безболезненно можете поэкспериментировать
Bash
1
2
3
4
5
6
#!/bin/bash
my() {
        echo $1
}
 
my hi | my bye
получим
Bash
1
bye
потому что вывод первой функции в текущей оболочке мы перенаправили в другую подоболочку с запущенной копией функции
и только вторая связанная с stdout выдала нам результат
Немного обезопасим вашу бомбу
Bash
1
2
3
4
5
6
#!/bin/bash
set -x
my(){
        (( $1 )) && my $(($1-1)) | my $(($1-1)) &
}
my 5
посмотрим сколько всего получилось функций c терминатором 0
Bash
1
2
3
4
5
my 5 |& grep -c 'my 0'
получим вот такую прогрессию.
+ my 5
+ grep -c 'my 0'
32
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2020, 09:37

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

не компилируется fork: Undefined reference to fork
написал маленькую fork-бомбу #include <stdio.h> #include <stdlib.h> int main() { while(1)...

Fork, не работает процесс-ребенок
Доброго дня всем. Я - новичок в программировании. Есть цель написать программу, которая бы писала...

Как именно в методах расширения указать, что переходить нужно именно главный контроллер?
В проекте есть несколько Areas. Маршрутизация нстроена так (для наглядности сократил) public...

Объясните, как работает эта программа, а именно знак равенства (==) в цикле While
Всем привет! Извиняюсь за глупый вопрос, недавно начал учить Си. Объясните как работает это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.