Question :
Lors de la transmission d'arguments au fonction principale dans les programmes C ou C, argv[0] contient-il toujours le nom de l'exécutable ? Ou s'agit-il simplement d'une pratique courante qui peut ne pas s'appliquer dans tous les cas ?
Réponse :
Selon la norme ISO C11 :
Si la valeur de argc est supérieure à 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 dans l'environnement hôte.
Par conséquent, il n'est pas toujours garanti que argv[0] représentera le nom exact de l'exécutable. Il s'agit plutôt d'une valeur définie par l'implémentation qui est fournie par l'environnement hôte et ne correspond pas nécessairement au nom de fichier de l'exécutable.
La norme ISO C stipule en outre que si argc est supérieur à zéro, les membres du tableau argv[ 0] à argv[argc-1] contiendra des pointeurs vers des chaînes avec des valeurs définies par l'implémentation déterminées par l'environnement hôte avant le démarrage du programme.
Cela signifie que la valeur de argv[0] n'est pas explicitement spécifié par la norme, ce qui permet des variations de comportement selon les différentes plates-formes et systèmes d'exploitation.
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!