Perl, fork() und Liste der Pids aller childs?

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Perl, fork() und Liste der Pids aller childs?

Post by alexander newald » 2004-07-18 21:44

Hallo,

gibt es eine Möglichkeit innerhalb eines Perl Scripts alle Pids der per fork() gestarteten Childs (und evtl. sogar deren Childs) herauszufinden?

Die Möglichkeit per push(@childs,fork()) (oder vergleichbar) eine Liste beim forken zu erstellen, fällt leider aus.

Danke!

Alex

dodolin
RSAC
Posts: 4009
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Perl, fork() und Liste der Pids aller childs?

Post by dodolin » 2004-07-18 22:39

Soweit ich bisher herausgefunden habe, ist das leider nicht möglich. Liegt aber nicht an Perl, sondern an den vom OS bereitgestellten Funktionen liegt.

fork() liefert dem Aufrufer die PID des Child zurück und dem Child 0. Jeder Prozess kann nun mit getpid die eigene PID erhalten und sofern vorhanden (beim Child) mit getppid die PID des Parent. Bisher habe ich aber keine Funktion gefunden, die dem Parent erlaubt, auf das Kind oder gar alle Kinder PIDs zuzugreifen und ich vermute daher, die gibts nicht.

Wenn du also keine Liste beim Erzeugen der Childs dynamisch erweitern kannst und auch nicht den Output z.B. von pstree parsen willst, sehe ich bisher keine Möglichkeit dazu. Ich wills aber auch nicht ausschließen, vielleicht gibt es ja doch ne OS Funktion, die das bereitstellt und ich kenne sie nur nicht... ;)