PID einer aufgerufenen Funktion in der bash

Florian Lohoff f at zz.de
Sun Apr 4 08:29:52 CEST 2010


On Sat, Apr 03, 2010 at 12:20:00PM +0200, Frank Bergmann wrote:
> > ein seperates shell script was das zur laufzeit macht und nicht zur
> 
> ... das ist Overkill.

Es war ein proof of concept das du ein anderes problem als das beschriebene
jagst ...
 
> Juergens Vorschlag ist die einfachste Moeglichkeit auch fuer alte Kernels 
> und Bash-Versionen: "read pid rest </proc/self/stat".

Das ist kein Kernel problem sondern ein variable expansion time problem.
Und auch stdin/out umleitungen koennten von dem expansion problem betroffen
sein - siehe auch man bash

So geht es auch:

for i in `seq 1 4`; do sh -c "( echo $$ \$$ )" & done

Der trick ist das $$ so zu escapen das die originaere bash das dingen
nicht expanded - die dann "geforkte" aber ... In diesem fall
dadurch das es nicht einfach ein () ist - sondern sh -c "()" - dadurch
kann ich fuer die geforkte shell variablen escapen ...

Alle nicht escapten variablen werden von der parent expanded, die escapeten
dann erst von der child shell ..

Flo
-- 
Florian Lohoff                                                 f at zz.de
"Es ist ein grobes Missverständnis und eine Fehlwahrnehmung, dem Staat
im Internet Zensur- und Überwachungsabsichten zu unterstellen."
- - Bundesminister Dr. Wolfgang Schäuble -- 10. Juli in Berlin 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 827 bytes
Desc: Digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20100404/4ef26390/attachment.sig>


More information about the Linux mailing list