[Vienna-pm] STDOUT-Umleitung

Peter J. Holzer hjp at wsr.ac.at
Fri Jan 21 03:39:20 PST 2005


On 2005-01-21 11:16:03 +0100, Baier Oliver wrote:
> > -----Ursprüngliche Nachricht-----
> > Von: vienna-pm-bounces at pm.org [mailto:vienna-pm-bounces at pm.org]
> > Im Auftrag von Carl A. Schreiber
> > Gesendet: Freitag, 21. Jänner 2005 10:49
> > 
> > Naja, ich dachte es gibt eine Möglichkeit herauszufinden wohin z.B. 
> > letztendlich STDOUT zeigt, oder welche 'Identität' das (der?) 
> > Handle es hat.
> 
> soviel ich weiss, ist das leider nicht moeglich, da STDOUT des perl-scripts
> nur zur shell zeigt, es aber nicht sieht, was die shell damit weiter macht.

Nein. STDOUT zeigt nie zur Shell (zumindest nicht unter unixoiden
Betriebssystemen), sondern immer auf ein Device, File oder eine Pipe. Im
Fall der Pipe kann natürlich eine Shell am anderen Ende hängen, muss
aber nicht.

Wenn Du ein Kommando ohne Umleitungen aufrufst, erbt der neue Prozess
einfach alle offenen Filedescriptoren der Shell (normalerweise stdin,
stdout und stderr).

Wenn Du eine Umleitung machst, öffnet die Shell das File, und vererbt
den offenen Filedescriptor an den Kindprozess. Der Kindprozess greift
dann aber direkt auf das File zu, die Shell hat damit nichts mehr zu
tun.

> > Dann (wenn umgeleitet) sollte alles in STDERR geschrieben 
> > werden, andernfalls 
> > (print in STDOUT & SDTERR) ist alles doppelt..
> 
> Warum willst du Nicht-Fehler nach STDERR schreiben?

Debug-Output? Prompts (bei interaktiven Programmen)?

In Abhängigkeit davon, ob stdout ein Terminal oder ein File ist,
Meldungen auf stdout oder stderr zu schreiben, halte ich allerdings i.A.
auch für keine gute Idee.

> Wenn der Shell-Aufrufer alles in einem log haben will kann er immer
> noch sagen ./script.pl > script.log 2>&1

oder für den (seltenen aber manchmal notwendigen) Fall, dass man nur
stderr in ein Programm umleiten will:

( ( ./qpsmtpd >&3 )  2>&1 | /usr/local/bin/ts >> log/$today ) 3>&1 

qpsmtpd ist übrigens in Perl geschrieben :-)

	hp

-- 
   _  | Peter J. Holzer      | If the code is old but the problem is new
|_|_) | Sysadmin WSR / LUGA  | then the code probably isn't the problem.
| |   | hjp at wsr.ac.at        |
__/   | http://www.hjp.at/   |     -- Tim Bunce on dbi-users, 2004-11-05
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 388 bytes
Desc: not available
Url : http://mail.pm.org/pipermail/vienna-pm/attachments/20050121/9bed77b9/attachment.bin


More information about the Vienna-pm mailing list