Um mein Problem zu schildern, muss ich erst ein bisschen ausholen. Also... Ich habe ein Programm geschrieben, das auf die Erstellung von Files in bestimmten Verzeichnissen triggert, d.h. wenn in diesem Verzeichnis neue Dateien entstehen, werden eine odere mehrere Aktionen ausgefuehrt. Nun ist es so, dass dieses Verzeichnis gleichzeitig ein freies FTP-Verzeichnis ist und ich mit diesem ueber FTP hochgeladenen Dateien etwas machen will. Ich kann aber erst etwas mit diesen Dateien machen, wenn ich weiss, wann sie vollstaendig hochgeladen sind. Genau das ist mein Problem. Wie kann ich in C rausbekommen, ob eine Datei vollstaendig hochgeladen ist oder nicht. Gibt es etwas, nachdem ich in der Datei suchen kann, dass mir sagt, Datei ist vollstaendig ? Ist EOF geeignet? Derzeit mache ich es so, dass ich nach einen gewissen Zeitraum noch mal schaue, ob die Datei waechst (Aenderung der Dateigroesse), wenn ja, dann Upload noch nicht fertig. Allerdings erzeugt dieser Zeitraum bei kleinen dateien zuviel Overhead.
Waere nett, wenn sich Loesungsalternativen finden wuerden.
Wann ist File vollstaendig hochgeladen?
Hi!
Solange die Datei hochgeladen wird, muß der FTP-Server sie noch offen haben. Du könntest also nach einem Dateideskriptor suchen, der auf die Datei verweist. Das wäre z.B. über die Process ID des FTP-Servers und das Verzeichnis /proc/*/fd möglich (oder lsof). Ist sicher recht umständlich. Einfacher wäre es, wenn der Server einen Lock auf die Datei setzen würde, während er hochlädt. Du müßtest dann selbst versuchen, den Lock zu bekommen, und wenn das gelingt, ist der Server fertig. Ob das geht, läßt sich aber wohl nur über den Quellcode des Servers in Erfahrung bringen. Wenn du den hast, kannst du auch gleich den Code zum Erzeugen des Locks einbauen
Gruß,
hjb
Solange die Datei hochgeladen wird, muß der FTP-Server sie noch offen haben. Du könntest also nach einem Dateideskriptor suchen, der auf die Datei verweist. Das wäre z.B. über die Process ID des FTP-Servers und das Verzeichnis /proc/*/fd möglich (oder lsof). Ist sicher recht umständlich. Einfacher wäre es, wenn der Server einen Lock auf die Datei setzen würde, während er hochlädt. Du müßtest dann selbst versuchen, den Lock zu bekommen, und wenn das gelingt, ist der Server fertig. Ob das geht, läßt sich aber wohl nur über den Quellcode des Servers in Erfahrung bringen. Wenn du den hast, kannst du auch gleich den Code zum Erzeugen des Locks einbauen
Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
Hi,
viele ftp server bieten programme wie ftpwho oder ftptop an bzw zeigen den status der aktuellen status in einer log datei an. Vielleicht würde es sinn machen mit diesen log datein zu arbeiten ?! ... Die Dateigröße zu überwachen oder den Lösungsvorschlag über Deskriptoren halte ich für nicht sinvoll wenn der ftp server "resume" unsterstützen soll.
viele ftp server bieten programme wie ftpwho oder ftptop an bzw zeigen den status der aktuellen status in einer log datei an. Vielleicht würde es sinn machen mit diesen log datein zu arbeiten ?! ... Die Dateigröße zu überwachen oder den Lösungsvorschlag über Deskriptoren halte ich für nicht sinvoll wenn der ftp server "resume" unsterstützen soll.