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

Metod Kozelj metod.kozelj na rzs-hm.si
Ned Jan 25 11:53:14 CET 1998


Howdy!

On Sat, 24 Jan 1998, polz wrote:

> >Ubiti moras primarni starsevski proces, torej tisti, ki je prvi izvedel
> >fork. Dodaj -9 switch (kill subprocesses). 
> preberi mail - stvar sem poizkusil - ni delala!

Kot sem ze enkrat napisal, je problem v tem, da tudi vsi childi naprej
forkajo svoje childe. Kaksni procesi (in njihove starse) tecejo si lahko
ogledas z ukazom 'ps -axuj --sort:ppid'.

Spodaj sem pripel del izhoda iz zgoraj zapisanega ukaza, ko je tekel
program, ki je vseboval vrstico

   for (;;fork());

V prvem stolpcu je napisan PPID, torej PID starsa, v drugem stolpcu pa PID
procesa. VIdis lahko torej, da ima prvi ('praoce') proces PID 13907. Ta je
'rodil' kar nekaj procesov. Prva dva procesa (13908 in 13909) sta njegova
otroka, tretji proces (13910) pa je ze njegov vnuk (otrok procesa
13908)!!! Vsi procesi pa imajo PGID (grupo) enako PIDu svojega predhodnika
(13907). V nekaj sekundah sem dobil priblizno 230 procesov, najdaljse
sorodstvene vezi pa so segale v peto koleno
(13907->13908->13910->13957->14066).

Ravnokar sem opazil: v mojem shellu je (po defaultu) nastavljen
'ulimit -u 256', kar mi je ocitno pomagalo, da se mi ni vse skupaj sesulo.

Torej, ce hoces pobit vse te procese, potem se moras kar precej namuciti.
Zato se raje ne zabavaj s kaksnimi konstrukti tipa for (;;fork()), ker se
lahko opeces. Ali pa bodi pripravljen na stepski pozar.

Ampak, ko sem jaz pognal ta program, sem lahko vse skupaj prekinil s
pritiskom na C-c. Torej na tvojem sistemu nekaj skriplje (jaz imam
Slackware 3.2, kernel 2.0.32, libc 5.4.33).

Peace!
  Mkx

------>8------
 PPID   PID  PGID   SID TTY TPGID  STAT   UID   TIME COMMAND
11893 14110 14109 11893  p5 14109  S     501   0:00 grep test 
11909 13907 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13908 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13909 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13926 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13927 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13928 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13929 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13930 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13931 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13932 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13933 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13934 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13935 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13936 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13937 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13938 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13939 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 13940 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 14123 13907 11909  p6 13907  Z     501   0:00 (test-fork1 <zombie>)
13907 14124 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 14125 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 14126 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 14127 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 14128 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 14129 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13907 14130 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13910 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13911 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13912 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13913 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13914 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13915 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13916 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13917 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13918 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13919 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13920 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13921 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13922 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13923 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13924 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 13925 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 14131 13907 11909  p6 13907  Z     501   0:00 (test-fork1 <zombie>)
13908 14132 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 14133 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 14134 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 14135 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 14136 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
13908 14137 13907 11909  p6 13907  R     501   0:00 ./test-fork1 
------>8------

takih vrstic je se mnogo (prevec za poslat na listo).




Dodatne informacije o seznamu Starilist