Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » GNU/Linux » Pipes zusammenführen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
31.08.2005, 19:29 Uhr
imhotep
followed the white rabbit


Hallo,

ich hab folgendes Problem, ich will stdout und stderr eines Programms in eine Pipe oder Datei zusammenführen, aber so, dass die Reihenfolge der ankommenden Zeilen erhalten bleibt und ich noch erkennen kann, von welcher Pipe die Zeile stammt. Zum Beispiel durch ein Zeichen am Zeilenanfang oder so.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.08.2005, 21:21 Uhr
virtual
Sexiest Bit alive
(Operator)


Erstmal geht das mit ANSI C überhaupt nicht. Da gibt es nur system und das wars.

Was sowohl Linux alsauch Windows unterstützen ist popen, wobei aber da nur stdout gelesen werden kann.

Daher wirst Du wohl eine sehr betriebssystemabh. Lösung benötigen. Daher die Frage: welches Betriebssystem?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.08.2005, 21:53 Uhr
mike
Pinguinhüpfer
(Operator)


dup müsste auch gehen oder?
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.08.2005, 23:24 Uhr
imhotep
followed the white rabbit


Linux
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.08.2005, 23:41 Uhr
Pablo
Supertux
(Operator)



--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
31.08.2005, 23:43 Uhr
imhotep
followed the white rabbit


Ich hab auch einfach die stdout und stderr in eine Dateiumgeleitet (freopen("out", "w", stderr) & freopen("out", "w", stdout)), aber da kamen die nicht in korrekter Reihenfolge an. Vorallem wenn das "abgehörte" Programm zuschnell Ausgaben produziert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
01.09.2005, 22:32 Uhr
Disi



Wie wäre ist hiermit?

stderror >&stdout (stderr in den stdout umleiten)
stout > datei (stdout in datei piepen)

mfg

Disi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
02.09.2005, 08:42 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du meinst


Code:
prog 2>&1 > out


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
02.09.2005, 10:49 Uhr
Disi



wenn du es genau nimmst mein ich


Code:

2>&1 1> bla

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
02.09.2005, 11:05 Uhr
virtual
Sexiest Bit alive
(Operator)


@Disi
Nee, die 1 ist redundant.
Viel entscheidender ist die Reihenfolge:

Code:
prog 2>&1 >a


Macht was völlig anderes als

Code:
prog >a 2>&1


Die letztere Zeile ist im allg. die, welche benutzt wird, Ausgaben zu bündeln. In der ersten Zeile wird einfach stderr nach dem stdout umgeleitet und anschliessend stdout nach a. Allerdings wird hier stderr nicht nochmals umgeleitet. Das kannst Du leicht mit Hilfe des folgenden Scripts überprüfen:

Code:
echo "ich bin stdout"
echo "ich bin stderr" >&2


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 02.09.2005 um 11:06 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ GNU/Linux ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: