Hallo Mailinglist,
ich habe ein kleines Problem! Folgende:
Mittlerweile habe ich es geschafft mittels C++ eine eingermasen
funktionierende CGI Lib zu schreiben. Es funktioniert eigentlich alles
wunderbar. Wenn ich allerdings die Funktion sleep() aus der
Hallo, Am Sat, 15 Nov 2003, Christian Kienle schrieb:
Hallo Mailinglist,
Apropos, du bist in der falschen gelandet. Fuer solche Fragen gibt's suse-programming.
ich habe ein kleines Problem! Folgende: Mittlerweile habe ich es geschafft mittels C++ eine eingermasen funktionierende CGI Lib zu schreiben. Es funktioniert eigentlich alles wunderbar. Wenn ich allerdings die Funktion sleep() aus der
verwende habe ich folgendes Verhalten: sleep(5); cout << "huh"; sleep(5); cout << "SuSE";
Man dürfte annehmen, dass man nach 5 Sekunden "huh" angezeigt bekommt und nach weiterens 5 Sekunden dann SuSE erscheint. Dem ist aber leider nicht so. Ich bekomme erst nach 10 Sekunden alles auf einen Schlag ausgegeben. Das ist ja nicht der Sinn und Zweck von dieser Funktion. Ich verwende SuSE 9.0 -> den standard Apache, der mitgeliefert wird.
Ein C++ Profi, der ich wegen dieses Problems kontaktiert habe meinte, dass bei meinem Apache irgendwas mit der Konfiguration bezüglich Threads nicht richtig stimmt. Leider habe ich keine Ahnung vom Apache :)
Dein C++ Profi ist wohl doch kein Profi...
Das "huh" verschimmelt einfach im Puffer. Teste mal:
Alternativ zum 'endl' kannst du auch 'cout << flush;' verwenden, beim
'endl' ist das 'flush' eben schon dabei.
==== test_sleep.cc ====
#include <iostream>
#include <cstdlib>
#include
Apropos, du bist in der falschen gelandet. Fuer solche Fragen gibt's suse-programming.
Ja kann sein. Aber da es sich hier ja hauptsächlich um die Konfiguration eines Apache Servers dreht und nicht um die Programmierung habe ich gedacht hier richtig zu sein.
Dein C++ Profi ist wohl doch kein Profi...
Ich habe vergessen zu erwählen, dass er das mit dem Puffer auch als erstes "erwähnt" und mir ebenfalls endl und flush vorgeschlagen hat. Beides ohne Erfolg.
Noch Fragen?
Auf der Konsole funktioniert das ja auch bei mir wunderbar. Nur halt nicht als CGI 'Anwendung', da ja anscheinend dann was an der Apache Konfiguration geändert werden müsste.
Moin, Am Sa, den 15.11.2003 schrieb Christian Kienle um 22:02:
sleep(5); cout << "huh"; sleep(5); cout << "SuSE";
Man dürfte annehmen, dass man nach 5 Sekunden "huh" angezeigt bekommt und nach weiterens 5 Sekunden dann SuSE erscheint. Dem ist aber leider nicht so. Ich
Ich kann kein C, aber das obige Verhalten ist für perl und php völlig normal. Die Ausgaben werden gepuffert und erst rausgeschickt, wenn die Seite "fertig" ist. [So zwischendurch: Kann das auch mit mod_gzip zusammenhängen...?]. In perl kann man GLAUBICH, UNTESTED, einfach $|=0 (oder 1?) setzen. In php habe ich noch keine Lösung gefunden (Und noch nicht richtig gesucht). Ich würde erstmal sagen: Dein Apache ist OK, dein Problem liegt in deinem C-Code. Gruß, Ratti -- -o) fontlinge | Font management for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
On Sun, 16 Nov 2003 at 10:51 (+0100), Ratti wrote:
Am Sa, den 15.11.2003 schrieb Christian Kienle um 22:02:
sleep(5); cout << "huh"; sleep(5); cout << "SuSE";
Man dürfte annehmen, dass man nach 5 Sekunden "huh" angezeigt bekommt und nach weiterens 5 Sekunden dann SuSE erscheint. Dem ist aber leider nicht so. Ich
Ich kann kein C, aber das obige Verhalten ist für perl und php völlig normal. Die Ausgaben werden gepuffert und erst rausgeschickt, wenn die Seite "fertig" ist. [So zwischendurch: Kann das auch mit mod_gzip zusammenhängen...?]. In perl kann man GLAUBICH, UNTESTED, einfach $|=0 (oder 1?) setzen. In php habe ich noch keine Lösung gefunden (Und noch nicht richtig gesucht).
Ich würde erstmal sagen: Dein Apache ist OK, dein Problem liegt in deinem C-Code.
Das ist übrigens kein C sondern C++. Den Puffer leeren kann man in C++ mit std::cout << "huh" << std::flush; Siehe auch: http://cppreference.com -> C++ I/O Flags Gruß, Bernhard -- _________ http://www.bwalle.de _________________________________________________ Ich weiß nicht, mit welchen Waffen wir im dritten Weltkrieg kämpfen werden, aber ich weiß, mit welchen im Vierten: mit Pfeil und Bogen. -- Albert Einstein
Das ist übrigens kein C sondern C++. Den Puffer leeren kann man in C++ mit
std::cout << "huh" << std::flush;
Siehe auch: http://cppreference.com -> C++ I/O Flags siehe: Ich habe vergessen zu erwählen, dass er das mit dem Puffer auch als erstes "erwähnt" und mir ebenfalls endl und flush vorgeschlagen hat. Beides ohne Erfolg.
-- ------------------------------------------------------ Christian Kienle tel: +49 (0)160 9351 4305 http://www.QtForum.org ~ an international Qt forum
participants (4)
-
Bernhard Walle
-
Christian Kienle
-
David Haller
-
Joerg Rossdeutscher