Hi Leute,
ich brauch mal kurz 'ne Info, wie ich aus 'nem Filehandle (FILE*) den Dateinamen herausfinden kann. Danke!
Grüße,
Hendrik
Hi Leute,
ich brauch mal kurz 'ne Info, wie ich aus 'nem Filehandle (FILE*) den Dateinamen herausfinden kann. Danke!
Grüße,
Hendrik
Anwendungsentwickler; ehem. Siemens, jetzt Nokia Siemens Networks GmbH. & CO KG
C/C++;C#;VB;ASP.NET;Ajax;MSSQL
Webentwicklung/Design; privat
PHP;MySQL;HTML;XML;Typo3;Photoshop;ASP.NET;Ajax;MS SQL
9 Betrachter und noch kein einziger Hit in fast 4 Stunden? Boar... Was das denn?!
Anwendungsentwickler; ehem. Siemens, jetzt Nokia Siemens Networks GmbH. & CO KG
C/C++;C#;VB;ASP.NET;Ajax;MSSQL
Webentwicklung/Design; privat
PHP;MySQL;HTML;XML;Typo3;Photoshop;ASP.NET;Ajax;MS SQL
Normalerweise ist doch bekannt, welche Datei geöffnet wurde... man musste doch den Pfad dazu angeben...
Ich denke, also bin ich. Manche sind trotzdem.
System: AMD64 3700+ (1MB), 2GB RAM, NVidia eGeForce 7600 GS (256MB), ASUS A8N-SLI SE, 3 x 400GB (SATA2, NCQ, Seagate)
OS: Gentoo GNU/Linux AMD64
Würde mich wundern, wenn das mit der Standard API möglich wäre, schließlich ist nicht gesichert, daß zu einem FILE Stream überhaupt ein zugeordneter Dateiname existiert.
Ciao,
_
Qt/KDE Entwickler
Debian Benutzer
Wollte ich auch gerade sagen.
Mal abgesehen davon wollte ich noch sagen dass du wirklich ziemlich ungeduldig bist.
MfG Peschmä
The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)
Ich bin immer ungeduldig. An die Latenz von Foren hab ich mich inzwischen gewöhnt. Aber mir kam's halt spanisch vor, daß nach 4 Stunden noch nichtmal ein einziger Hit auf dem Beitrag gelandet ist, trotz 9 - 10 Beobachtern...
Zum Thema: Wenn ich 'n Filedeskriptor hab, den ich ja aus der FILE* Struktur ermitteln kann, dann müsste dazu passend doch auch eine Datei vorhanden sein. Die ich manuell ja auch über das /proc System ermitteln könnte. Das ist mir aber zu umständlich, weshalb ich halt gern gewusst hätt, ob's da auch 'ne API Funktion gibt.
Anwendungsentwickler; ehem. Siemens, jetzt Nokia Siemens Networks GmbH. & CO KG
C/C++;C#;VB;ASP.NET;Ajax;MSSQL
Webentwicklung/Design; privat
PHP;MySQL;HTML;XML;Typo3;Photoshop;ASP.NET;Ajax;MS SQL
Eine Datei schon, in einem gewissen Sinne (wenn man z. B. den Tastaturanschluss auch als Datei ansieht). Du hast aber nach dem *Namen* der Datei gefragt.Zum Thema: Wenn ich 'n Filedeskriptor hab, den ich ja aus der FILE* Struktur ermitteln kann, dann müsste dazu passend doch auch eine Datei vorhanden sein.
Der Name/Bezeichner der "Datei" lässt sich dann doch über das Auslesen des Links ermitteln. Der zeigt doch aus dem /proc Dateisystem irgendwo hin. Und wenn es sich um eine /dev oder eine reguläre Datei handelt, kann man darüber doch auch ihren Namen ermitteln.
Anwendungsentwickler; ehem. Siemens, jetzt Nokia Siemens Networks GmbH. & CO KG
C/C++;C#;VB;ASP.NET;Ajax;MSSQL
Webentwicklung/Design; privat
PHP;MySQL;HTML;XML;Typo3;Photoshop;ASP.NET;Ajax;MS SQL
Manchmal ja, aber nicht immer. Denk doch mal an den Fall das die Datei gelöscht wird, während ein Programm sie geöffnet hat. Dann ist der Name weg.Der Name/Bezeichner der "Datei" lässt sich dann doch über das Auslesen des Links ermitteln. Der zeigt doch aus dem /proc Dateisystem irgendwo hin. Und wenn es sich um eine /dev oder eine reguläre Datei handelt, kann man darüber doch auch ihren Namen ermitteln.
In dem Fall könnte eine ensprechende API Funktion immer noch einen NULL Zeiger liefern, wie es andere API Funktionen auch gerne tun, wenn was nicht hinhaut.
Anwendungsentwickler; ehem. Siemens, jetzt Nokia Siemens Networks GmbH. & CO KG
C/C++;C#;VB;ASP.NET;Ajax;MSSQL
Webentwicklung/Design; privat
PHP;MySQL;HTML;XML;Typo3;Photoshop;ASP.NET;Ajax;MS SQL
Das könnte sie wohl irgendwie. Aber darum ging es ja nicht. Es ging nur darum, dass die Annahme jede Datei hätte einen Namen falsch ist.In dem Fall könnte eine ensprechende API Funktion immer noch einen NULL Zeiger liefern, wie es andere API Funktionen auch gerne tun, wenn was nicht hinhaut.
Und ein IP-Socket hat auch keinen Namen.
Der Dateiname ist ohnehin wegen der Möglichkeit der Löschung ziemlich irrelevant, zwischen dem (hypothetischen) Ermitteln des Dateinamens und dem Zugriff über eine API kann das schon längst eine andere Datei sein, als die auf die der FILE Handle zeigt.
Ciao,
_
Qt/KDE Entwickler
Debian Benutzer
Vielleicht liesse sich mittels fstat() der Inode ermitteln und dann durchs Dateisystem hangeln und die Inodes vergleichen, Etwa mit fts_read() (und Verwandten; weil bisschen schneller).
Hat man nen Treffer hat man den Filenamen. Hat man am Ende keinen gibts die Datei nicht (mehr) als solche...
Effizient ist das, sollte das tatsächlich gehen, allerdings mit Sicherheit nicht. Vielleicht solltest du auch mal näher erläutern was du vorhast?
chmod -R +t /*
Eines unserer Programme, bzw. so ziemlich alle, da sie einen Grundstock an Funktionen anbieten, gibt uns die Möglichkeit, Dateien über das Netzwerk zu übertragen. Alles proprietär und schon seit 15 Jahren so im Einsatz. Also fragt nicht, wieso wir nicht die vorhandenen Mittel nutzen. Die Suche nach der Antwort zu dieser Frage habe ich schon lange aufgegeben. Ist halt so.
Einer der lange offenen Punkte ist die Tatsache, daß wir noch immer nicht mehr als 1 Datei zeitgleich übertragen können. Die Binärdaten der Dateien werden dabei in sogenannten IDF Records übertragen. Also im Prinzip ein Protokoll, das sowohl auf TCP, als auch auf UDP verwendet werden kann, da es eine Sicherungsschicht implementiert hat, die bei Bedarf aktiviert werden kann.
Nur soviel zum Protokoll. Allerdings läuft bei der Übertragung, bzw. der Verteilung der Daten auf die angelegten Dateien irgendwas schief. Die Daten werden irgendwie vermischt. Also wir finden Daten aus der einen Datei in der anderen wieder und umgekehrt.
Ich wollte nun über eine solche Funktion ermitteln, ob die Daten wirklich in die vorgesehene Datei geschrieben werden. Da ich inzwischen die Vermutung habe, daß die Daten von der Gegenstelle schon falsch gesendet werden, würde ich diese Vermutung gern anhand von Dummy-Dateien verifizieren, mir also anzeigen lassen, welche Daten über welchen Socket kommen und in welche Datei geschrieben werden.
Debugging also...
Anwendungsentwickler; ehem. Siemens, jetzt Nokia Siemens Networks GmbH. & CO KG
C/C++;C#;VB;ASP.NET;Ajax;MSSQL
Webentwicklung/Design; privat
PHP;MySQL;HTML;XML;Typo3;Photoshop;ASP.NET;Ajax;MS SQL
Dann brauchst du ja nur beim Öffnen der Datei den Namen mit dem Wert des Filedescriptors ausgeben lassen und kannst später jederzeit vom Wert eines FDs auf die Datei schließen.
Ciao,
_
Qt/KDE Entwickler
Debian Benutzer
Lesezeichen