www.mikrocontroller.net

Forum: PC-Programmierung In eine Datei schreiben und aus ihr lesen.


Autor: filla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein Problem, wobei ich mir auch beim Prinzipm, wie es zu lösen 
ist, nicht sicher bin.

Ein Programm schreibt konstant Zeile für Zeile Daten mit fprintf in eine 
Datei A.

Ab einem bestimmten Punkt Sollen alle Zeilen der Datei A über Netzwerk, 
gelesen werden und in eine Datei B auf dem anderen PC geschrieben 
werden.
Das konstante dazuschreiben von Daten in A geht aber weiter.

Wenn alle Daten übertragen sind (also kopiert) sollen die Daten direkt 
an B gesendet werden. Dabei sollte keine Zeile verloren gehen?

Hat jemand einen logischen Ansatz, wie das Problem zu lösen ist? Ich 
müsste ja immer mit fseek den Curser verschieben, weil ich nicht alle 
Daten auf einmal lesen und wegkopieren kann weil das schreiben immer 
weitergeht.

Grüße,
filla

Autor: Bernhard M. (boregard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie wärs mit zweimal öffnen, einmal zum Schreiben und einmal zum Lesen, 
gibt 2 Filehandles mit unterschiedlichen Schreib- Lesepositionen....

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hat jemand einen logischen Ansatz, wie das Problem zu lösen ist? Ich
>müsste ja immer mit fseek den Curser verschieben, weil ich nicht alle
>Daten auf einmal lesen und wegkopieren kann weil das schreiben immer
>weitergeht.

Das klingt irgendwie nach einer Art Ringpuffer, wobei es sich ja nicht 
um einen Ring handelt.
Du musst dir doch nur die Lese- und die Schreibposition merken. Die 
Operationen zuum Lesen und Schreiben dürfen sich nicht in die Quere 
kommen. Ansonsten ist das Problem (aus meiner Sicht) ziemlich trivial...
Der "Abstand" zwischen der Schreib- und der LEse-Adresse beschreibt ja 
die Datenmenge, die noch nicht verschickt wurde.
Soll die Datei A immer weiter wachsen?
Sonst könnte man sie ja auf eine bestimmte Größe begrenzen (Datensätze 
zählen) und sobald de Grenze erreicht wurde, eine neue zum Schreiben 
öffnen, und die bis jetzt erstellt verschicken...

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übertrag von Anfang an alle Zeilen und verzögere die Ausleserei (Puffer) 
auf der Empfängerseite. Vermutlich bekommste sowas schon mit "tee" und 
"netcat" sowie nem FIFO hin, so in der Art:
-- Server-Seite --
# touch daten.txt
# netcat -l -p 65000 > daten.txt &
Jezt kannste aus "daten.txt" lesen.

-- Client-Seite --
# mkfifo daten
# cat daten | tee protokoll.txt | netcat 192.168.2.5
Wenn nun Daten in den Fifo "daten" geschrieben werden, landen sie in 
"protokoll.txt" und gleichzeitig über Netzwerk in "daten.txt".

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.