Hallo, folgende Situation: Ein Linuxrechner mit Samba gibt ein Verzeichnis frei, ein Windowsrechner greift lesend darauf zu. Der Windowsrechner pollt nun ständig eine Datei, um anhand deren Inhalt etwas über den Zustand einer Applikation auf dem Linuxrechner, die ihrerseits gelegentlich in diese Datei schreibt, zu erfahren. Ab und an kommt es nun dazu, dass die Windowsapplikation nicht den richtigen Zustand liest, obwohl dieser wirklich durch die Datei angezeigt wird. Windowsapp. in C#, Linuxapp in C++. Dateizugriff erfolgt mit den üblichen Bordmitteln. Welche Umstände können für dieses Verhalten ursächlich sein? Vielen Dank schon mal für alle Anregungen.
file caching... wenn du in die file am linux rechner schreibst darfst du sofort einen flush danach machen.. dann sollte es auf die platte kommen wenn linux nicht gerade meint, dass etwas wichtigeres auf die platte raufmuss/runtermuss... aber im prinzip sollte das mehr oder weniger sofort nach dem flush richtig in der file liegen... 73
Die Datei wird auf dem Linuxsystem sofort nach dem Schreibzugriff geschlossen. Der Windowsrechner versucht es im übrigen wiederholt mit relativ großen Pausen. Ich versteh es nicht, ein Testprogramm auch auf dem Linuxsystem zeigt an, dass die Datei ordnungsgemäß den richtigen Inhalt enthält.
schliessen heisst nicht unbedingt wirklich schreiben !!!! es gibt unter linux einen filecache und der kann dir da reinpfuschen.. mach noch einen flush vor dem schliessen.. sicher ist sicher!! und dann wäre da noch unter windows der filecache... wie man den abdrehn kann..ka... 73
Hi, fstream.close enthält ein implizites flush. Auf tiefere Ebenen kommt man mit fstream nicht. Darunterliegende Systemschichte, die irgendwelche Puffer haben, kann man so ohnehin nicht beeinflussen...
> Der Windowsrechner pollt nun ständig eine Datei[...]
Und wird auch immer ein 'Close' zwischendurch gemacht?
Das war auch meine Idee, hat der Programmierer mittlerweile eingebaut, Test läuft. Mal schauen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.