Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Alle Umgebungsvariablen unter Linux (posix) auslesen (https://www.delphipraxis.net/209218-alle-umgebungsvariablen-unter-linux-posix-auslesen.html)

kernelhacker 10. Nov 2021 17:14

Alle Umgebungsvariablen unter Linux (posix) auslesen
 
Servus,

ich würde gerne die Liste aller Umgebungsvariablen für den aktuellen Prozess auslesen. Dies ist mit Delphi unter Windows ja auch kein Problem, aber ich muss primär Linux unterstützen.
Ich könnte natürlich eine Shell starten, dort env, printenv oder set ausführen und die Ausgabe von STDIN auslesen. Das ist aber in meinen Augen keine saubere Lösung.
Hat jemand einen heißen Tipp, wie man "sauber" an die Umgebungsvariablen rankommt?

Schönen Abend,

Stefan

Dalai 10. Nov 2021 20:14

AW: Alle Umgebungsvariablen unter Linux (posix) auslesen
 
Unter Linux werden die Umgebungsvariablen von Prozessen in /proc/<pid>/environ abgelegt und sind daher auch von dort abrufbar. Ganz wichtig zu wissen ist in diesem Zusammenhang, dass sich der Inhalt dieser Pseudo-Datei nicht ändert, wenn ein Prozess weitere Variablen hinzufügt, denn sie gibt die Variablen zum Startzeitpunkt des Prozesses an.

Den eigenen Prozess bekommt man unter /proc/self, die Umgebungsvariablen des eigenen Prozesses daher unter /proc/self/environ.

Wie portabel das Ganze ist, weiß ich auch nicht, denn AFAIK gibt's /proc nicht unter allen Unices.

Ich kann mir vorstellen, dass es bestimmte Funktionen in den üblichen Bibliotheken (libc6) gibt, die die aktuellen Umgebungsvariablen zurückgeben. Stellt sich auch die Frage, welchem Ziel das dienen soll, die Liste der Umgebungsvariablen zu bekommen.

Grüße
Dalai

Frickler 11. Nov 2021 17:41

AW: Alle Umgebungsvariablen unter Linux (posix) auslesen
 
Zitat:

Zitat von kernelhacker (Beitrag 1497386)
Servus,

ich würde gerne die Liste aller Umgebungsvariablen für den aktuellen Prozess auslesen. Dies ist mit Delphi unter Windows ja auch kein Problem, aber ich muss primär Linux unterstützen.
Ich könnte natürlich eine Shell starten, dort env, printenv oder set ausführen und die Ausgabe von STDIN auslesen. Das ist aber in meinen Augen keine saubere Lösung.
Hat jemand einen heißen Tipp, wie man "sauber" an die Umgebungsvariablen rankommt?

Schönen Abend,

Stefan

In der Linux Standardbibliothek libc gibts dafür eine Variable "environ", definiert als "extern char **environ;".


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz