[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