[linux-l] Arrays in C
Axel Weiß
aweiss at informatik.hu-berlin.de
Mo Nov 21 22:08:18 CET 2005
Oliver Bandel schrieb:
> Man muß auch schauen, ob es nicht knallt, wenn mal nicht das drin
> steht, was man gerne drin haben will...
ack.
> .... wenn bestimmte Felder bestzt sein müssen, da es ansonsten rumst,
> sollte man nicht mit eigener Programmiererei davon ausgehen, daß die
> eigenen Moden, die man einführt, und wo man normalerweise in gewisser
> Weise belegte Felder anders belegt, auch immer so nach eigenem Gusteo
> gemacht wird.
>
> Man sollte sich für solide Programmierung schon auch an die
> Gegebenheiten des Betriebssystems, auf dem man arbietet, halten.
>
> Ansonsten bitte ein ganz großes Schild drüber hängen, auf dem steht:
> "Ich programmiere nach meiner eigenen Nase und wenn es kracht
> weiß ich, daß es mein eigener Fehler war, aber vermutlich werde ich
> dann doch schimpfen, was das für ein Scheiß ist, den andere
> verzapft haben."
??
> Oder Kurz: Man kann das Ignoranten-Schild drauf hängen.
Worüber ärgerst Du Dich hier?
> In argv[0] kommt der Name des programms (per Konvention).
> Auf jeden Fall aber muß argv[0] vorhanden sein, auch wenn
> da - wider jegl. Konvention - Bullshit drin steht.
Nachgeschaut: "Nach Konvention ist argv[0] der Name, mit dem das Programm
aufgerufen wurde, also ist argc wenigstens 1. [...] zusätzlich verlangt
der Standard, dass argv[argc] ein Nullzeiger ist." (K&R, S. 110)
Ich kenne einige C-Compiler, da ist argv == 0, argc == 0. Keine Argumente
- auch kein Programmname in argv[0] (der wäre nämlich für diese
Plattformen nicht definiert). Man hat halt nicht immer ein
Dateisystem...
Ich habe mir angewöhnt, argc > 0 zu prüfen, bevor ich auf argv zugreife.
In diesem Sinn wäre
if (argc <= 1){
return 1;
}
execv(argv[1], argv + 1);
sicher besser, als der blinde exec-Aufruf.
Axel
Mehr Informationen über die Mailingliste linux-l