popen, kill

 ( face | 2006. március 12., vasárnap - 0:37 )

Kellemes estet mindenkinek!

Azt szeretnem megkerdezni, hogy a popen-nel inditott processeket (es azok childjait) hogyan lehet killelni?

Elore is koszonok minden segitseget!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Attól függ, h mik azok a processzek, amiker popen()-nel akarsz indítani, és h milyen irányú pipe-ra van szükség.
Ha a gyerek programokat te írod és a pipe a szülő processz felé irányul, akkor a gyerek processz azzal kezdhetné futását, h a pid-jét kiírja stdout-ra, a szülő meg beolvasná a popen() által visszaadott fd-ről.
Ha a pipe a gyerek felé irányul és a szülő programot te írod, akkor meg írjál egy saját popen()-szerű függvényt, ami nem csak a pipe fd-jét adja vissza, hanem a gyerek pid-jét is.

A pipe a szulo fele iranyul, de nem en irom a gyerek programokat.
Valoszinuleg egy pid-et is visszaado popen lesz ebbol, ahogy azt Te is tanacsoltad.

Meg az erdekelne, hogy egy process childjait hogyan tudom lekerni?

AFAIK sehogy, neked kell majd eltárolni valamilyen formában a fork() által visszaadott pid-eket.

A gond az, hogy ezeket a forkolasokat nem az en programom csinalja, ezert nem tudom eltarolni. pstree hogy csinalja?

/proc-ban végigolvassa az összes processzhez tartozó bejegyzéseket, aztán valahogy kitalálja

Gondolom a statusban szereplo PPid-bol. Akkor meglehet en is igy teszek majd.

Koszonom a segitseget!

Egyebkent megneztem pstree-t es ott ps parancsot hasznal.
En is kovettem ezt a megoldast egy "ps -eo pid,ppid"-del.