132 Stimmen

Ist "argv[0] = Name der ausführbaren Datei" ein akzeptierter Standard oder nur eine übliche Konvention?

Bei der Übergabe von Argumenten an main() in einer C- oder C++-Anwendung, wird argv[0] immer der Name der ausführbaren Datei sein? Oder ist dies nur eine gängige Konvention und nicht zu 100 % garantiert?

3voto

ChrisF Punkte 130622

Diese Seite Staaten:

Das Element argv[0] enthält normalerweise den Namen des Programms, aber darauf sollte man sich nicht verlassen - es ist ohnehin ungewöhnlich, dass ein Programm seinen eigenen Namen nicht kennt!

Andere Seiten scheinen jedoch die Tatsache zu bestätigen, dass es sich immer um den Namen der ausführbaren Datei handelt. Diese Staaten:

Sie werden feststellen, dass argv[0] der Pfad und der Name des Programms selbst ist. Dies ermöglicht es dem Programm, Informationen über sich selbst zu finden. Außerdem wird das Array der Programmargumente um ein weiteres Argument erweitert. Ein häufiger Fehler beim Abrufen von Befehlszeilenargumenten besteht darin, argv[0] zu nehmen, obwohl Sie argv[1] benötigen.

3voto

Joe Mabel Punkte 1320

Ich bin mir nicht sicher, ob es sich um eine fast universelle Konvention oder einen Standard handelt, aber auf jeden Fall sollten Sie sich daran halten. Ich habe allerdings noch nie gesehen, dass es außerhalb von Unix und Unix-ähnlichen Systemen ausgenutzt wurde. In Unix-Umgebungen - und vielleicht besonders in den alten Tagen - können sich Programme je nach dem Namen, unter dem sie aufgerufen werden, sehr unterschiedlich verhalten.

BEARBEITET: Wie ich aus anderen Beiträgen ersehen kann, hat jemand festgestellt, dass es aus einer bestimmten Norm stammt, aber ich bin sicher, dass die Konvention schon lange vor der Norm bestand.

1voto

Polluks Punkte 415

Wenn Sie ein Amiga-Programm über die Workbench starten, wird argv[0] nicht gesetzt, sondern nur über CLI.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X