1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • 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
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • scrapper
    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
    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

  • Plantschkuh!
    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.

  • scrapper
    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
    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 ;) 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
    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.

  • scrapper
    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

  1. Datenschutzerklärung
  2. Impressum