Anzeige:
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 15 von 33

Thema: directory functions

  1. #1
    Registrierter Benutzer
    Registriert seit
    28.03.2002
    Ort
    Berlin
    Beiträge
    10

    directory functions

    moinsen,
    ich suche eine function unter linux, die mir das verzeichnis wiedergeben in dem die binary file meines progs liegt und eine mit der ich ein aktives verzeichnis setzen kann..
    unter windows hatte ich damals SetCurrentDirectory usw...

    thx4answers

  2. #2
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    function? In was für einer Umgebung? C, C++, shell, .....?

    Hier eineige Beispiele für die Shell / Bash
    Code:
    cd ..... #wechselt das aktive Verzeichnis
    pwd # gibt das aktuelle verzeichnis aus
    ls # listet die Dateien im Verzeichnis
    Unter http://www.linuxfibel.de/file+dir.htm gibt es eine übersichtliche Einführung

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  3. #3
    Registrierter Benutzer
    Registriert seit
    28.03.2002
    Ort
    Berlin
    Beiträge
    10
    aso.. nein ich suche welche für c++ oder ich verwende auch qt in meinem programm vielleicht stellen die mir sowas zur verfügung...

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Bei Qt kannst du dir mal die Klasse QDir ansehen.

    Die Lage des Executables ist nicht so einfach bestimmbar, zumindest nicht allgemein für Unixsysteme.
    Bei Linux kann man eventuell was in /proc finden.

    Üblicherweise braucht man das aber gar nicht, bzw wird der Installationspfad während der Compilierung einfach in einer Konstante übernommen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Original geschrieben von anda_skoa
    Die Lage des Executables ist nicht so einfach bestimmbar, zumindest nicht allgemein für Unixsysteme.
    Versteh ich nicht. Es gelten doch auch die Umgebungsvariablen. Wie wär es denn mit $0 ? Das beinhaltet doch Programmname incl. Pfad.

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich könnte mir vorstellen, dass das von der Shell abhängt, aus der gestartet wurde, und nur funktioniert, wenn aus einer Shell gestartet wurde.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Jetz muss ich mal ganz blöd nachfragen: Werden unter Unix / Linux nicht grundsätzlich alle Programme aus einer Shell heraus gestartet? Würde bedeuten dass die Shell immer existent ist. Shell ist nicht gleichbedeutend mit Konsole oder Terminal.

    Ist ja fast schon ne Frage fürn Kernelhacker. Ich bin nach der Antwort hoffentlich etwas schlauer

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  8. #8
    Registrierter Benutzer
    Registriert seit
    28.03.2002
    Ort
    Berlin
    Beiträge
    10
    nja ich wollt n log für mein prog schreiben und wenn ich ohne pfadangabe nur mit fopen dateiname die file erstelle landet sie immer in meinem home directory, ich wollt aber eigendlich das sie dahin kommt wo auch das prog liegt...

  9. #9
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Dann warte mal die Antwort auf meine Frage ab, oder frag doch mit deinem Prog mal $0 ab.

    Warum schreibst du das Logfile nicht nach /var/log/irgendwas.log ? Eventuell sogar syslog einsetzbar?

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  10. #10
    Registrierter Benutzer
    Registriert seit
    28.03.2002
    Ort
    Berlin
    Beiträge
    10
    ja es iss ja nich nur der log es iss auch ne config file die auch in dem ordner liegen sollte...

    wie frag ich denn den inhalt von $0 ab.. bzw. was iss das überhaupt ne env var ?

  11. #11
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Das logfile liegt da schon ganz gut, zumindet für Fedora und Redhat. Ist die Frage, wie man an die Systemspezifische (Distributions abhängige) Einstellung heran kommt.

    Deine Config Datei schreibst du nach /etc/deine.conf oder /etc/deinprog/deine.conf, wenn sie global gilt und nach ~/.deinprog/deine.conf wenn sie User spezifisch ist. Die Tilde bitte durch das Homverzeichnis getenv("HOME") ersetzen.

    Habe gerade selbst mal einige Gehversuche in C++ gemacht. stdlib.h bietet die Funktion getenv(). Geht eigentlich ganz gut. Nur $0, $$, $?, etc wollen sich nicht abfragen lassen.

    Übrigens: Was liefert denn argv[0]?

    Hans
    Geändert von Hans-Georg Normann (21-03-2004 um 20:54 Uhr)
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  12. #12
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Original geschrieben von anda_skoa
    Üblicherweise braucht man das aber gar nicht, bzw wird der Installationspfad während der Compilierung einfach in einer Konstante übernommen.
    Also das ist was, was ich an den Linux/Unix Programmen HASSE. Somit wird es unmöglich mal schnell ein Programm für nen Freund zu kompelieren, der ne andere Distri verwendet. Oder es ergeben sich Probleme bei propriäteren Progs.
    Ich finde da sollte es eine kleine path API geben. So ca:
    Code:
    char * getpath( int pathident );
    
    /* path-dentifiers: */
    #define HOME_BASE 0
    #define HOME 1
    #define APP_PATH 2
    #define TEMP 3
    #define BIN 4
    #define USER_BIN 5
    #define LIB 6
    #define USER_LIB 7
    ...

    Original geschrieben von Hans-Georg Normann
    Übrigens: Was liefert denn argv[0]?
    Unter umständen einen Leerstring! Oder einen Fehler da argc == 0! Denn das alles kann man mit diesen Funktionen manipulieren. Zu bestimmen, wo dein Prog. liegt, ist auf grund solcher und ähnlicher Trixs NIE mit 100%iger Sicherheit möglich (hab ich mal gelesen).
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  13. #13
    Registrierter Benutzer
    Registriert seit
    29.02.2004
    Beiträge
    113
    Original geschrieben von Hans-Georg Normann
    stdlib.h bietet die Funktion getenv(). Geht eigentlich ganz gut. Nur $0, $$, $?, etc wollen sich nicht abfragen lassen.
    Das sind auch keine Environment-Variablen.

    Übrigens: Was liefert denn argv[0]?
    Das erste Token der Commandline, mit der das Programm aufgerufen wurde.

    Ach ja, man will übrigens nicht mit C++ oder objektorientierten Sprachen anfangen lernen, zu programmieren IMHO.

    Gruß && HTH!
    dev
    Geändert von Deever (21-03-2004 um 21:30 Uhr)

  14. #14
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Deever, wenn $0, $$, $#, etc keine Environmentvariablen sind, als was muß ich die denn einstufen? Gibt es da eine Möglichkeit, darauf zuzugreifen?

    Ist argv[0] nicht immer da? Sieht aus wie $0 in Linux.

    Ach ja, man will übrigens nicht mit C++ oder objektorientierten Sprachen anfangen lernen, zu programmieren IMHO.
    Stimmt. Dafür habe ich Delphi genommen. Will aber auch mal was anderes Proggen als immer nur Windws oder Scriptsprachen.

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  15. #15
    Registrierter Benutzer
    Registriert seit
    29.02.2004
    Beiträge
    113
    Original geschrieben von Hans-Georg Normann
    Deever, wenn $0, $$, $#, etc keine Environmentvariablen sind, als was muß ich die denn einstufen?
    Das sind Shellvariablen. Die stellt dir deine $SHELL zur Verfügung.

    Gibt es da eine Möglichkeit, darauf zuzugreifen?
    Auf die Parameter der Vatershell? Nein.

    Ist argv[0] nicht immer da?
    Musst es natürlich als Parameter von main() angeben...

    Sieht aus wie $0 in Linux.
    In der Shell, meinst du?

    Ach ja, man will übrigens nicht mit C++ oder objektorientierten Sprachen anfangen lernen, zu programmieren IMHO.
    Stimmt. Dafür habe ich Delphi genommen. Will aber auch mal was anderes Proggen als immer nur Windws oder Scriptsprachen.
    Ich meinte eigentlich eher, man solle zuerst C gut können, bevor man etwas anderes macht!

    Gruß,
    dev

Lesezeichen

Berechtigungen

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