Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Setzen einer Enviroment Variable mittels putenv aus einer QT Anwendung heraus

  1. #1
    Registrierter Benutzer
    Registriert seit
    26.03.2001
    Ort
    D,38440,Wolfsburg
    Beiträge
    14

    Question Setzen einer Enviroment Variable mittels putenv aus einer QT Anwendung heraus

    Hallo,

    ich habe folgendes Problem:

    ich versuche mittels der putenv Funktion eine Enviroment Variable zu erzeugen, die ich mit einem Pfad füllen möchte.

    der Code sieht gekürzt so aus :

    int stat = putenv("LOGDPFAD=/usr/home");

    if (!stat)
    {
    printf("Fehler... konnte Variable nicht setzen");
    }
    .........
    Ich kriege immer wieder die Fehlermeldung sprich kann die Variable weder erzeugen noch setzten.
    Mein Frage lautet : Was mache ich falsch ???? die Funktion getenv funktioniert z.B. einwandfrei.

    danke für jeden Hinweis
    Martin Tentlewitz

  2. #2
    Registrierter Benutzer
    Registriert seit
    12.02.2001
    Beiträge
    30
    Hoi tentlewi!

    Haste schon mal die manpage zu putenv gelesen? :-)

    Wenn ja, dann kannste dir die Frage selbst beantworten...



    Thomas.
    Geändert von TThomas (22-01-2002 um 17:02 Uhr)
    The main failure in computers is usually between keyboard and chair.

  3. #3
    Registrierter Benutzer
    Registriert seit
    12.02.2001
    Beiträge
    30
    Aber ich will ja mal nicht so sein...

    putenv leifert bei fehlerfreiem Ablauf 0 zurück, wenn also alles glatt läuft steht in deiner Abfrage !0, was TRUE entspricht, also trifft das if zu.

    -> Fehlerbehandlung wird nur bei korrektem Ablauf durchlaufen, bei Fehler hingegen nicht!


    Gruß, Thomas.
    The main failure in computers is usually between keyboard and chair.

  4. #4
    Registrierter Benutzer
    Registriert seit
    26.03.2001
    Ort
    D,38440,Wolfsburg
    Beiträge
    14

    Wink leider nicht....

    ich danke Dir fuer den Hinweis.... aber entweder bin ich heute schon zu lange an diesem Rechner dran oder ich sehe es einfach nicht... waere nett, wenn Du mir den entscheidenen Tip geben koenntest, damit meine Leiden ein Ende haben

    Martin

  5. #5
    Registrierter Benutzer
    Registriert seit
    26.03.2001
    Ort
    D,38440,Wolfsburg
    Beiträge
    14

    Question danke..

    ok dass mit der If Abfrage war eigentlich nicht so wichtig, denn die hatte ich mir nur bauen wollen um zu sehen was da schief läuft.
    auch wenn ich nur den putenv Befehl wie oben beschrieben setze und mir dann mit echo $LOGDPFAD usgeben lasse ist der Wert nicht gesetzt... das ist das eigentliche Problem.

    habe ich da irgendwo einen fatalen Denkfehler ????

    martin

  6. #6
    Registrierter Benutzer
    Registriert seit
    26.03.2001
    Ort
    D,38440,Wolfsburg
    Beiträge
    14

    Lightbulb hab den Fehler gefunden

    Hab den Fehler gefunden....

    Die Umgebungsvariable wird gesetzt, aber nur fuer den Laufenden Prozess, so dass ( logischerweise ) sie auch in der Shell mit echo $XY nicht sichtbar ist....... war wohl doch bisschen spät gestern.... Danke ......

    Martin

  7. #7
    Registrierter Benutzer
    Registriert seit
    12.02.2001
    Beiträge
    30
    Dies ist mir mittlerweile auch bekannt, allerdings konnte ich keine Lösung finden, die Variable global einzuführen.

    Hast du?
    The main failure in computers is usually between keyboard and chair.

  8. #8
    Registrierter Benutzer
    Registriert seit
    26.03.2001
    Ort
    D,38440,Wolfsburg
    Beiträge
    14

    Thumbs down bis jetzt nicht...

    Ich habe jetzt ganz schoen lange hin und her experimentiert leider ohne Erfolg.
    IIrgendwie ist die Inetraktion von c++ Programmen mit shell scripten eher spärlich bis gar nicht dokumentiert, oder hast Du ein gutes Buch zu dem Thema.
    Ich habe z.B. kein brauchbares Beispiel finden koennen wie ich eine
    QString Variable mit dem Pfad über einen putenv Aufruf übergeben kann.
    Wie übergibt man solch eine Variable aus dem C++ Programm an diese Funktion ???? Ich habe so ziemlich alle möglichen Hochkommata und was es sonst noch gibt ausprobiert...... geht das überhaupt ?? Von diesen Fragen habe ich inzwischen eine ganze Menge, jedoch finde ich nirgendwo eine brauchbare Antwort. Auch die Geschichte mit den Typenkoventionen... ich habe auf der einen Seite einen QString die putenv Funktion ist vom Typ const* char....
    wenn Du mir in der Richtung einen Tip anbieten kannst, ich waere Dir sehr dankbar....... vielleicht kann man dann ein kleines Tutorial zu diesem Thema verfassen
    so bis denn

    Martin

  9. #9
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Wenn du einen char* von einem QString brauchst, hängt es vom Inhalt ab, was du am besten machst.
    Wenn der Inhalt ein Pfad in 7bit ASCII ist, also kein unicode oder so, dann geht das mit
    QString filename;
    char* cFileName = filename.latin1();

    Allerdings hab ichschon mehrfach gelesen, dass speziell für Pfade und Dateinamen folgendes empfohlen wird:
    char* cFileName = QFile::encodeName(filename);

    Ciao,
    _

Lesezeichen

Berechtigungen

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