1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Software und Anwendungen
  3. Tools und Produktivität

Pfadangabe bei Programmausführung WOHER?

  • scrapper
  • 10. Februar 2009 um 11:40
  • scrapper
    2
    scrapper
    Mitglied
    Punkte
    20
    Beiträge
    3
    • 10. Februar 2009 um 11:40
    • #1

    hi leute,

    standardmässig ist es bei der Programmausführung so, dass Pfadangaben von Dateien weggelassen werden können, solange sich die Datei im selben Ordner wie das Programm befindet.

    FRAGE:
    woher weiß mein Programm in welchem Ordner es sich befindet, und somit den Pfad der Datei die sich ebenfalls in diesem Ordner befindet.
    WOHER kommt diese Information? Vom Betriebssystem? Wie läuft das?

    Danke jetzt schon für Euro Infos!
    Scrapper

  • davide
    23
    davide
    Mitglied
    Reaktionen
    110
    Punkte
    5.660
    Beiträge
    1.048
    • 10. Februar 2009 um 20:22
    • #2

    naja für java zB:
    "java Main"
    dann weiß die VM ja schonmal wo die klasse liegt, dann kanns natürlich auch die klasse erfahren

    aber ich weiß nicht ob ich die frage ganz kapiert hab

    Sich berühren ist wie Afrika, fremd und kalt.

    http://www.penisland.net

    http://runtastic.com/

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 10. Februar 2009 um 20:32
    • #3
    Zitat von scrapper

    woher weiß mein Programm in welchem Ordner es sich befindet, und somit den Pfad der Datei die sich ebenfalls in diesem Ordner befindet.


    Üblicherweise braucht sich das Programm nicht darum kümmern: Der Dateiname wird im Endeffekt an eine Betriebsystemroutine übergeben, und das Betriebssystem löst solche Sachen dann auf.

    Programme können üblicherweise aber auch fragen, was denn ihre working directory ist, bzw. sie auch ändern. Läuft auch übers Betriebssystem.

    *plantsch*

  • scrapper
    2
    scrapper
    Mitglied
    Punkte
    20
    Beiträge
    3
    • 10. Februar 2009 um 21:13
    • #4

    Danke für Eure Infos.

    Nun hab ichs: Natürlich könnte es so sein, und das halte ich für sehr wahrscheinlich, dass es wie in folgendem kleinen Beispiel abläuft.

    BSP) in einem C Programm wird mittels der Funktion !-- @page { size: 8.5in 11in; margin: 0.79in } P { margin-bottom: 0.08in } -->FILE *datei = fopen(“textdatei.txt”, “r”);
    Diese Funktion fopen könnte unter Linux beispielsweise das Kommando "pwd" (print working directory) ausführen und schon ist der ganze Pfad bekannt.
    Sehr wahrscheinlich, dass dies so gelöst ist. Könnte jedoch von Betriebssystem zu Betriebssystem andere Varianten geben.

  • michi204
    26
    michi204
    Mitglied
    Reaktionen
    63
    Punkte
    7.268
    Beiträge
    1.318
    • 11. Februar 2009 um 00:13
    • #5
    Zitat von scrapper


    Diese Funktion fopen könnte unter Linux beispielsweise das Kommando "pwd" (print working directory) ausführen und schon ist der ganze Pfad bekannt.
    Sehr wahrscheinlich, dass dies so gelöst ist. Könnte jedoch von Betriebssystem zu Betriebssystem andere Varianten geben.

    um wieder ein bisschen haarzuspalten: die funktion wird wohl eher eine andere library-funktion aufrufen, als extra einen prozess zu starten. da gäbe es zb getcwd(3). wie mir ein ltrace gezeigt hat, ist dies jedoch nicht der fall. fopen(3) verwendet den system call open(2), der das scheinbar selbst irgendwie hinzaubert. so, quellcode schauen darfst du selbst :winking_face: die manual-sections stehen in der klammer, also zb "man 7 path_resolution" (was auch eine sehr interessante seite ist in diesem zusammenhang).

    lg

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 11. Februar 2009 um 09:21
    • #6
    Zitat von scrapper

    [...]Pfadangaben von Dateien weggelassen werden können, solange sich die Datei im selben Ordner wie das Programm befindet.

    Das ist nicht richtig. Das aktuelle Verzeichnis hat nichts mit dem Ort, wo sich das Programm selber befindet, zu tun. Wenn du beispielsweise in Linux folgende Situation hast:

    ~$ ls

    dann befindet sich ls in /bin/, aber das aktuelle Verzeichnis ist ~!

    Unter Windows ist es so, dass wenn Programme via Explorer aufgerufen werden, das aktuelle Verzeichnis standardmäßig das Verzeichnis ist, in dem die exe-Datei liegt (kann aber auch umgestellt werden via Eigenschaftsfenster eines Links).
    Unter Mac OS X ist das aktuelle Verzeichnis immer / wenn ein Programm vom Finder aus gestartet wird, was oft zu Verwirrungen führt bei Neulingen.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • scrapper
    2
    scrapper
    Mitglied
    Punkte
    20
    Beiträge
    3
    • 12. Februar 2009 um 14:46
    • #7

    Mit der Funktion getcwd() lässt sich der Name des Arbeitsverzeichnisses ermitteln.

    #include <unistd.h>

    char *getcwd(char *puffer, int puffergrösse)

    Fkt. gibt bei Erfolg den Pfadnamen an puffer zurück, bei Scheitern NULL

    greetings
    scrapper

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung