STDOUT und STDERR vereinigen
-
Hi Leute,
ich brauche eure Hilfe bei folgendem Problem: ich muss die beiden Ausgabeströme (Standardausgabe und Standardfehlerausgabe) irgendwie vereinigen (so, wie das bei Java's ProcessBuilder Klasse geht http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ProcessBuilder.html#redirectErrorStream(boolean)). Hab ich das jetzt verständlich erklärt?
Also ich möchte aus STDOUT_FILENO lesen, falls es dort etwas zu lesen gibt und aus STDERR_FILENO, falls dort etwas zu lesen ist. Ich weiß nicht, ob es dafür eventuell eine Funktion in C gibt, um das zu gewährleisten, oder wie ich das schaffen soll. Bin für alle Tipps dankbar!LG,
Chrissi
-
das musst du getrennt behandeln.
-
Chrissi17 schrieb:
[...] Hab ich das jetzt verständlich erklärt?
Nein.
Wieso willst Du aus STDOUT lesen???
STDOUT und STDERR sind Pipes zum Schreiben!Wenn Du die beiden Ausgabekanäle eines Programms in der Shell "vereinen" möchtest, geht das mit ">&":
> ls . gibts_nicht >& ls.log > cat ls.log ls: gibts_nicht: No such file or directory .: bin doc src > _
Willst Du in einem eigenen C-Programm alle Ausgaben von STDERR nach STDOUT umleiten, so geht das mit dup2:
# include <stdio.h> # include <unistd.h> int main() { dup2(1, 2); fprintf(stderr, "Das geht an STDERR.\n"); printf("Das geht an STDOUT.\n"); return(0); }
Beide Ausgaben landen bei diesem Beispiel in dem Standard-Ausgabekanal STDOUT.
-
ist ganz einfach
stderr zumachen und dann stdout auf stderr duplizieren