Maison >développement back-end >C++ >Est-ce que argv[0] est toujours le nom de l'exécutable en C/C ?

Est-ce que argv[0] est toujours le nom de l'exécutable en C/C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-14 12:23:11840parcourir

Is argv[0] Always the Executable Name in C/C  ?

Argv[0] est-il garanti comme étant le nom de l'exécutable ?

Lorsque vous travaillez avec des applications C ou C, on suppose souvent que le Le premier argument passé à main() (argv[0]) représente le nom de l'exécutable. Cependant, cette hypothèse n'est pas toujours vraie.

Définition de la norme

Selon la norme ISO C11 :

"Si la valeur de argc est supérieur à zéro, la chaîne pointée par argv[0] représente le nom du programme ; argv0 doit être le caractère nul si le nom du programme n'est pas disponible auprès de l'hôte ; environnement."

Cette déclaration précise que argv[0] ne doit contenir le nom du programme que si le nom est disponible dans l'environnement hôte. De plus, il se peut qu'il ne s'agisse pas d'une correspondance exacte, mais plutôt d'une représentation.

Valeurs définies par la mise en œuvre

La norme indique en outre que les valeurs dans argv[0] sont défini par l'implémentation. Cela signifie que différents systèmes d'exploitation ou environnements peuvent gérer la population de argv[0] différemment.

Par exemple, sur les systèmes basés sur UNIX, les appels de la famille exec peuvent attribuer des valeurs arbitraires à argv[0]. Cependant, la norme exige que l'implémentation documente ce comportement.

Conclusion

Par conséquent, bien qu'il soit courant que argv[0] contienne le nom de l'exécutable, ceci n'est pas garanti par les normes C ou C. L'implémentation peut faire varier le contenu de argv[0] à condition de documenter son comportement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn