Maison >développement back-end >C++ >Est-ce que argv[0] est toujours le nom de l'exécutable en 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!