fstreams aus funktion
-
hier der funktions-code:
int logNetStuff( char *buffer ) { time_t epo_time; char *cur_time; ofstream logfile( "../log/p80.log", ios::app ); if( !logfile ) { cout << "error: can't open log-file \"./log/p80.log\"" << endl; return -1; } epo_time = time( NULL ); cur_time = ctime( &epo_time ); cur_time[ strlen( cur_time ) -1 ] = 0; logfile << "[" << cur_time << "] " << buffer << endl; logfile.close( ); return 0; }
aufgerufen wird das ganze in ein while-schleife. ich bekomme immer den fhler "can't open logfile...." angezeigt. habe aber root-rechte....
ciao, cypoc
-
mach mal
if(!logfile.is_open())
-
funktioniert leider auch nicht.
der fehler wird immer noch aufgerufen. kann es vielleicht was mit der while-schleife auf sich haben?hier die schleife:
while( 1 ) { sin_size = ( int ) sizeof( struct sockaddr_in ); if( ( mySock.newfd = accept( mySock.sockfd, ( struct sockaddr * ) &mySock.remote_addr, &sin_size ) ) == -1 ) { cout << "error: accept( ) failed" << endl; continue; } strcpy( mySock.recv_buffer, "p80: connection from " ); strcat( mySock.recv_buffer, inet_ntoa( mySock.remote_addr.sin_addr ) ); strcat( mySock.recv_buffer, "\r\n" ); if( logNetStuff( mySock.recv_buffer ) == -1 ) continue; while( recv( mySock.newfd, mySock.recv_buffer, sizeof( mySock.recv_buffer ), 0 ) > 0 ) { if( logNetStuff( mySock.recv_buffer ) == -1 ) continue; } close( mySock.newfd ); }
ciao + danke erstmal
-
Hmm, Deine Fehlermeldung sagt ./log und speichern möchtest Du das in ../log, ist das Absicht?
btw: Wann wird eigentlich die Schleife verlassen? Ich sehe weder break noch return...
-
das mit dem ./log und ../log ist absicht.
die schleife wird nie verlassen, da das ganze ein daemon sein soll....
liegt's daran? wenn ja, wie kann ich das aendern?ciao
-
jetzt wollte ich mir noch 'ne funktion zum auslesen, von config-files schreiben dort passiert genau dasselbe....
kompilieren tu ich den ganzen sh** mit : g++ bla.cpp -o bla -O3 -Wall
hat das vielleicht was zu sagen?ciao + thx @ all
[ Dieser Beitrag wurde am 16.12.2002 um 19:09 Uhr von cypoc editiert. ]
-
ich nochmal. hab mal die letzte version meines programms mit verzeichnisstruktur etc. als tar.gz-file hochgeladen.
http://mitglied.lycos.de/sfo2k3/
hoffe das hilft mehr.
ciao
-
probier mal folgendes Programm aus
#include <fstream> #include <iostream> using namespace std; int main() { ofstream out("test1"); if( !out.is_open() ) { cerr << "1. fehler" << endl; return 1; } ofstrem test("test2",ofstream::app); if( !test.is_open() ) { cerr << "2. fehler" << endl; return 1; } }
-
../log/p80.log
Von welchem Verzeichnis aus rufst du das denn auf??
Wo ist denn ueberhaupt dein '/log' Verzeichnis?mfg
v R
-
@kingruedi: hab das programm ausprobiert funktioniert einwandfrei. das problem bei mir ist ja auch, sobald ich den kram aus 'ner funtkion aufrufen will, funktioniert es nicht.
nochmal zum logfile: die ausgabe des programms ist doch nun wirklich ....egal.
aber trotzdem zur erklaerung: in ./bin/ wird das programm ausgefuehrt. das logfile soll aber in ./log geschrieben werden. deshalb das ../log/logfile.
hat denn mein programm bei euch funktioniert?
ciao
[ Dieser Beitrag wurde am 17.12.2002 um 15:11 Uhr von cypoc editiert. ]
-
hat denn niemand mein programm ausprobiert?
ciao
-
ich nochmal.
also ich hab ein neues problem mit meinem programm...
das ganze soll mal ein http-proxy werden. als vermittler zw. zwei
rechner funktioniert das auch schon ganz gut, jedoch kommen die internet
seiten nur sehr zerstueckelt beim browser an.
weiss jemand von euch woran das liegt?hab die neuste version meines programms auf die oben angegebene seite hochgeladen.
hoffe jemand kann helfen.
ciao
-
benutz doch openlog, syslog und closelog, wenn du unbedingt Log Funktionen brauchst.
-
he das hoert sich gut an.
werd mal meine log-funktion umschreiben...vielen dank!
ciao