C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

cout(bzw. cerr) umlenken

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Daniels78
Guest





PostPosted: Tue Apr 24, 2007 6:29 pm    Post subject: cout(bzw. cerr) umlenken Reply with quote



Hey Leute,
ich möchte gern in meinen Programm die std::cout umleiten. Ich habe
einen Deamon geschrieben, der evtl. Ausgaben auf der tty2 (unix/linux)
machen soll. dieses soll aber nicht als Schalter beim start des
deamons passieren. Gibr es eine solche Möglichkeit??

gruss daniel
Back to top
Stefan Reuther
Guest





PostPosted: Tue Apr 24, 2007 9:28 pm    Post subject: Re: cout(bzw. cerr) umlenken Reply with quote



Hi there,

Daniels78 wrote:
^^^^^^^^^ Da könnte dein Name stehen.

Quote:
ich möchte gern in meinen Programm die std::cout umleiten. Ich habe
einen Deamon geschrieben, der evtl. Ausgaben auf der tty2 (unix/linux)
machen soll. dieses soll aber nicht als Schalter beim start des
deamons passieren. Gibr es eine solche Möglichkeit??

Ich würde ja zuallererst versuchen, die Betriebssystem-Mittel zum
Umleiten zu benutzen ("mein_programm > /dev/tty2").

Wenn das nicht reicht, Datei aufmachen und dem std::cout deren Streambuf
unterjubeln.

int main() {
std::ofstream datei("/dev/tty2");
std::streambuf* p = std::cout.rdbuf(datei.rdbuf());
// hier dein Programm
std::cout.rdbuf(p);
}

(Das Verbiegen des Streambuf sollte vor dem Ende der Lebenszeit des
Objektes 'datei' auf jeden Fall rückgängig gemacht werden, also ggf.
fehlt hier noch ein try/catch. Ausgaben, die danach auf std::cout
landen, werden dann natürlich auch nicht mehr umgeleitet.)


Stefan
Back to top
Thomas Maeder
Guest





PostPosted: Tue Apr 24, 2007 9:49 pm    Post subject: Re: cout(bzw. cerr) umlenken Reply with quote



Daniels78 <daniels78@t-online.de> writes:

Quote:
ich möchte gern in meinen Programm die std::cout umleiten. Ich habe
einen Deamon geschrieben, der evtl. Ausgaben auf der tty2
(unix/linux) machen soll. dieses soll aber nicht als Schalter beim
start des deamons passieren.

Sondern?


Quote:
Gibr es eine solche Möglichkeit??

Möglicherweise. Etwas in der Art von

int main()
{
std::ofstream of("somefile");
std::streambuf * const saveCoutBuf(std::cout.rdbuf(of.rdbuf()));

do_your_stuff();

std::cout.rdbuf(saveCoutBuf);
}

könnte helfen.
Back to top
Daniels78
Guest





PostPosted: Wed Apr 25, 2007 9:11 am    Post subject: Re: cout(bzw. cerr) umlenken Reply with quote

Stefan Reuther wrote:
Quote:
Hi there,

Daniels78 wrote:
^^^^^^^^^ Da könnte dein Name stehen.
erst mal danke für deine antwort. meine name ist leider in old germany

nur ein mal vorhanden, sodass jeder eintrag hierüber bei google zu
finden ist. hat schon mal beim praktikum probleme gemacht -sorry geht
nicht anders - brauche hier ein pseudonym
gruss daniel;-)

Quote:

ich möchte gern in meinen Programm die std::cout umleiten. Ich habe
einen Deamon geschrieben, der evtl. Ausgaben auf der tty2 (unix/linux)
machen soll. dieses soll aber nicht als Schalter beim start des
deamons passieren. Gibr es eine solche Möglichkeit??

Ich würde ja zuallererst versuchen, die Betriebssystem-Mittel zum
Umleiten zu benutzen ("mein_programm > /dev/tty2").

Wenn das nicht reicht, Datei aufmachen und dem std::cout deren Streambuf
unterjubeln.

int main() {
std::ofstream datei("/dev/tty2");
std::streambuf* p = std::cout.rdbuf(datei.rdbuf());
// hier dein Programm
std::cout.rdbuf(p);
}

(Das Verbiegen des Streambuf sollte vor dem Ende der Lebenszeit des
Objektes 'datei' auf jeden Fall rückgängig gemacht werden, also ggf.
fehlt hier noch ein try/catch. Ausgaben, die danach auf std::cout
landen, werden dann natürlich auch nicht mehr umgeleitet.)


Stefan
Back to top
James Kanze
Guest





PostPosted: Thu Apr 26, 2007 7:55 pm    Post subject: Re: cout(bzw. cerr) umlenken Reply with quote

On Apr 24, 3:29 pm, Daniels78 <daniel...@t-online.de> wrote:

Quote:
ich möchte gern in meinen Programm die std::cout umleiten. Ich habe
einen Deamon geschrieben, der evtl. Ausgaben auf der tty2 (unix/linux)
machen soll. dieses soll aber nicht als Schalter beim start des
deamons passieren. Gibr es eine solche Möglichkeit??

Thomas und Stefan haben schon gezeigt, wie man es machen kann,
aber ich möchte fragen: warum? In der ganzen Zeit, seitdem ich C
und C++ treibe (also, seit Anfang der 1980igen Jahren) habe ich
nie eine Ausgabe nach Standard-Out in Produktionscode
geschrieben. Normallerweise gehen Ausgaben immer nach einem
std::ostream&... der wohl gewöhnlicherweise mit std::cout
initialisiert wird, nicht aber zwangsläufig.

--
James Kanze (GABI Software) email:james.kanze (AT) gmail (DOT) com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.