2012-04-15 9 views
0

Ich habe ein c-Programm, das im Thread ausgeführt wird und einige Daten in einer Datei anhängen. Ich möchte einen Python-Thread ausführen, der die gleiche Datei (welcher c-Thread schreibt) nach einem bestimmten Zeitintervall kopiert. Gibt es dafür einen sicheren Weg? Ich mache das in Linux OS.Python-Thread wartet auf das Kopieren der Datei

+0

Eine Option ist, die Datei zu sperren: http://StackOverflow.com/Questions/489861/locking-a-file-in-python –

+0

Warum müssen Sie die Datei kopieren? –

Antwort

0

Es gibt eine Menge wichtiger Details zu Ihrem Szenario, die nicht erwähnt werden, aber unter der Annahme, dass Sie keinen Sperrmechanismus in das C-Programm schreiben und dann im Python-Programm verwenden können (z. B. Wenn Sie eine vorhandene Anwendung auf Ihrem System verwenden), können Sie in os.stat nachschauen und die letzte geänderte Uhrzeit m_time überprüfen. Das hängt natürlich davon ab, dass Sie wissen, dass eine kürzliche m_time bedeutet, dass die Datei im C-Programm nicht wieder geöffnet und erneut verwendet wird.

Wenn das Datei-Handle im C-Programm immer geöffnet ist und gelegentlich geschrieben wird, dann gibt es nicht viele einfache Optionen, um zu wissen, wann es geschrieben wird und wo nicht.

+0

Der c-Thread schreibt die Datei alle 2 Sekunden, aber mein Python-Thread kopiert die Datei nicht, während für 2 Sekunden c-Thread alle Sperren aus der Datei freigegeben werden, warum? –

+0

Warum müssen Sie die Datei speziell in _Python_ kopieren? Warum nicht einfach 'rsync' in regelmäßigen Abständen starten, um dies zu tun? –

+0

Wie kann ich das mit rsync machen? –

Verwandte Themen