Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 18

Thema: [C/C++] Blackout... Filename aus Handle

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.07.2004
    Beiträge
    456

    [C/C++] Blackout... Filename aus Handle

    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

  2. #2
    Registrierter Benutzer
    Registriert seit
    02.07.2004
    Beiträge
    456
    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

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.02.2005
    Beiträge
    32
    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

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    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)

  6. #6
    Registrierter Benutzer
    Registriert seit
    02.07.2004
    Beiträge
    456
    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

  7. #7
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    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.
    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.

  8. #8
    Registrierter Benutzer
    Registriert seit
    02.07.2004
    Beiträge
    456
    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

  9. #9
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    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.
    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.

  10. #10
    Registrierter Benutzer
    Registriert seit
    02.07.2004
    Beiträge
    456
    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

  11. #11
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    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.
    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.

  12. #12
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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

  13. #13
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236
    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 /*

  14. #14
    Registrierter Benutzer
    Registriert seit
    02.07.2004
    Beiträge
    456
    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

  15. #15
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •