[ LUGOS ] for( ; ; fork());

Jernej Kovse jernej.kovse na uni-mb.si
Pet Jan 23 10:10:37 CET 1998


On Fri, 23 Jan 1998, polz wrote:

> Vem, kaj naredi zankica for(;;fork()); .
> Zanima me le, kako naj ubijem program, ki jo vsebuje.
> 
> Vceraj sem (testing! testing!) program s to zankico pognal in poizkusil:
> 
> kill PID (PID prvega procesa) - prvi umrl, nastal pa je nov proces.
> kill -9 PID (PID drugega procesa) - isto
> killall forker (ime programa) - isto
> killall -9 forker - isto.
> killall -9 bash - zadevi sem ubil shell, iz katerega je bila pognena, pa je se 
>                         zmeraj zivela
> killall X - stvar sem pognal iz X11R6 - se vedno zivela!!
> 
> Koncno je pomagl init 1 (single user mode), v katerega pa je stvar zaradi 
> zasedenosti lezla okrog pol ure (ce ne se vec).
> 
> Kako bi torej gornji program ubil na lazji, elegantnejsi nacin 
>  (predvsem pa brez ubijanja vseh tekocih procesov).
> 
> Upam, da kdo ve ...
> 
> 
> P.S. Kaj takega se v win95 ne more zgoditi - gotovo bom presaltal nanje,
> ker imajo VARNEJSI multitasking . (*NUTZ!*)
> 

Ubiti moras primarni starsevski proces, torej tisti, ki je prvi izvedel
fork. Dodaj -9 switch (kill subprocesses). Ce cakas predolgo, se v praksi
velikokrat zgodi, da forki zasedejo vse mozne PIDe, tako, da masina obvisi
nekje v zraku. Ne ostane ti drugega kot reset. Sicer lahko to (deloma)
resis tako, da imas stevilo PIDov na userja omejeno, ampak sistem je 
praviloma vseeno obremenjen, ker fork() zabija karnel z zahtevami po
novem PIDu, ta pa mu ga ne more vec dodeliti. Razlicni unixi se pri tem
problemu zelo razlicno obnasajo.

Jernej

*******************************************************************
  Jernej Kovse       E-mail: jernej.kovse na uni-mb.si
  Simekova 22           WWW: http://www2.feri.uni-mb.si/~jernej
  2000 Maribor                  
  Slovenia                 CS Student                   
                      University of Maribor
     Faculty of Electrical Engineering and Computer Science
*******************************************************************




Dodatne informacije o seznamu Starilist