* On Sun, Jul 01, 2001 at 01:13:02PM +0200, Marc Schiffbauer wrote:
Ich moechte die Ausgabe von cdda2wav fuer ein Shell-Script manipulieren.
So ist die Ausgabe fuer mich ok, die Daten werde *continuierlich* angezeigt.
Diese Ausgabe muss ich nun on-the-fly weiter aufbereiten. Dafuer bietet sich awk an. Ein stark vereinfachtes Beispiel sollte so aussehen:
# cdda2wav -v255 -g -B -D/dev/scd2 -N 2>&1 \ | tr '[:cntrl:]' '\n' | awk '{ print }'
Damit habe ich das Problem aber shcon irgendwie eingebaut:
Zuerst dauert es sehr lange, bis ueberhaupt etwas ausgegeben wird, obwohl die ersten paar Zeilen "normale" Zeilen sind: -------------
86016 bytes buffer memory requested, 4 buffers, 8 sectors ======================================
Hier ist dein Ansatz zum Problembehebung bzw zur Erweiterung deiner Ausgaben.
#Cdda2wav version 1.9_linux_2.4.3_i686_i686 real time sched. soundcard support Tracks:15 75:10.50 CDINDEX discid: eelMM4vs8miKJxZSzzQ4dm_hHJc- -------------
und die Ausgabe kommt nur noch "schubweise" an, das heisst, es kommen immer ein paar Zeilen, dann eine pause (ca. 1-2 sek), dann kommt wieder was, dann wieder pause...
Ja, der Buffer iss voll nehm ich ma einfach so an. Und dann kommt es naklar auch nur stossweise nachdem eben der Buffer voll ist und neu anfaengt einzulesen.
Woran liegt das? Wie kann ich erreichen, dass die Zeilen *continuierlich* ankommen?
Hm, die meissten C-Programme haben eine feste Buffergroese, was nicht immer gut ist da es fuer Angriffe missbraucht werden kann (DoS).
Wenn ich die Ausgabe in eine Dastei umlenke, und spaeter mit awk nachbearbeite, gibt es diese Verzoegerungen nicht.
Iss klar, da umgehst du den Buffer!
Ich hoffe ich habe mich nicht zu unklar ausgedruckt, und hoffe *sehr* dass mir jemand einen Tipp geben kann.
Hm, ich hoffe das es _der_ richtige Tip war *g* Du solltest versuchen den Buffer von cddawav zu umgehen.....wie du auch mit schreiben in ein file getan hast. Teste doch ob du anschl. das file mit tail auslesen kannst. Gruß Clemens -- sig_13 Kurze Sätze an eine file anhängen: [Info: man bash] Entweder: echo bla_bla >> /file oder mit EOF: $ cat <<EOF>> Datei
alles was hier geschrieben wird taucht in `Datei' auf EOF (EOF und [Enter] beendet den Analog)