Portál AbcLinuxu, 5. listopadu 2025 18:20
Nedávno se tu psalo o fork-bombě. Velmi mě to zaujalo, tak jsem si takového milánka zkompiloval a spustil.
#include <unistd.h>
int main(void)
{
while(1) {
fork();
}
return 0;
}
Můj Debiánek nejprve komplet vytuhl a myslel jsem, že je konec. Po dvaceti minutách (co jsem se sprchoval) ho to ale přestalo bavit a vzpamatoval se. Sice byla paměť zaplněná a procesor vytížený, ale fork už byl zakázaný. Stačilo pomačkat Ctrl+C a bylo to. Bravo.
Včera jsem programoval n-vláknovou aplikaci na výpočet gravitačního zrychlení, v Javě. 500 metrů nad zemí mi vychází 9,8011 m/s2, což je docela slušné, protože integrační krok je 40 km
. Trochu jsem to trápil a i když se výpočet rozdělí na 50 vláken, pořád je to skoro stejně rychlé. Taky jsem se podíval na třetí díl Harryho Pottera a nevím, jestli za to mohl on nebo Hermiona, ale hluboko po půlnoci jsem dostal nepřekonatelnou chuť napsat nativní fork-bombu pro Windows.
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
for (;;)
{
BOOL suc = CreateProcess("ForkBomb.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
}
return 0;
}
Nejprve jsem to pustil na W2k. Tuháč. Šlo sice pohybovat kurzorem od myši, ale jinak se nepohlo nic. Nepomohla ani hodne dlouhá sprcha a po čase jsem to vypnul.
Neodolal jsem a zkusil to ještě na WXP. Tato verze má oproti W2k jedno faktické vylepšení správce oken - i pokud program neodpovídá, jde s okny hýbat. Sice to taky vytuhlo, ale GUI čas od času reagovalo. Nebo je lepší jádro, každopádně jsem na několikátý pokus uzavřel okno konzole, ze které jsem to pustil, a ono se to všehno ukončilo. Kupodivu nefungovalo zabíjení jednotlivých procesů z Task Managera, vyhodilo to na mne hlášku, že na to nemám právo. Tož nevím
.
No prostě hezky strávená noc.
Tiskni
Sdílej:
Ke kompilaci je potřeba (jak jinak) kompilátor, a také Windows Platform SDK. Obojí se dá stáhnout ze stránek Microsoftu (kompilátor lze použít i jiný). Ale pozor - jsou toho stovky MB!!!
cc fork.c && ./a.out ;)
Ne, ted vazne, nainstaluj si DJGCC (port gcc pro win32/DOS) a jestlize budou vsechny cesty v poradku, tak by melo stacit
gcc fork.c
a.exe
Niezeby som so spominanym software nebol spokojny
..snad az na Lotus
Budu vděčný za každou radu.
#include <windows.h>
int main(int argc, char** argv)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
for (;;) {
BOOL suc = CreateProcess("ForkBomb.exe", NULL,
NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
}
return 0;
}
Budu vděčný za každou radu.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.