Moin,
* Bernd Brodesser
* Thorsten Haude schrieb am 05.Nov.2001:
* Bernd Brodesser
[01-11-04 23:35]: * Thorsten Haude schrieb am 04.Nov.2001:
* Bernd Brodesser
[01-11-04 14:55]: int main (const int argc, const char **argv, const char **env); Das ist kein ISO-C. Das ist POSIX und es ist auch K&R, wenn man mal von const absieht, das es bei K&R nicht gibt. Schön, daß es immerhin Standards gibt, die es enthalten. Ich verzichte gerne auf nicht-ISO-Features. Das sind Untemengen von ISO. Alles was POSIX ist ist AFAIK auch ISO. Sorry, in 'C:A Reference Manual' steht, daß es kein Bestandteil von ISO-C ist, und ich eher geneigt, den Autoren zu glauben.
Es gibt keine andere Möglichkeit an die Umgebungsvariablen zu kommen, es sei den, man verwendet Routienen, die ihrerseits das dritte Argument von main auswerten. In ISO-C wird man das mit Librarycalls machen. Die sind aber plattformspezifisch, genauso wie Umgebungsvariablen. Wie die Libraries die Umgebungsvariable ermitteln, spielt letztendlich keine Rolle, aber ich wäre überrascht, wenn sie das (ggf. nicht existente) dritte Argument auswerten. Dieses dritte Argument ist nur eine Schnittstelle zur Umgebung.
Ich schätze mal, bei java ist das nicht anders. Das ist nicht das einzige, das bei Java anders ist als bei C. Mag sein, aber sicherlich kann man mit Java das Enviroment verändern. Ich denke nicht, und wenn doch, dann wär's ein Bug. Wie sollen solche Programme auf Plattformen laufen, die kein Environment haben? (Vermutlich wird aus dem gleichen Grund in ISO-C darauf verzichtet.) Und wie soll bash programmiert sein? Was hat das damit zu tun? Das Environment ist halt ein Feature, das man nicht vorraussetzen sollte, wenn man wirklich plattformunabhängig programmieren will. Die Bash läuft dann vielleicht nur auf Plattformen mit Environment, ich weiß es nicht.
Thorsten -- They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety. - Benjamin Franklin