Ça n'est pas un hack, on peut mettre ce qu'on veut dans le argv[0] en argument de execve(). Le fait d'y mettre le nom du programme est juste une convention qui est plus ou mois respectée, mais il y a des exceptions par exemple pour conditionner le fonctionnement d'un programme. Par exemple si on met un tiret avant le nom du shell dans argv[0] il se comporte differemment. ("A login shell is one whose first character of argument zero is a -, or one started with the --login option.")
Il y a aussi des situations réelles comme le shebang où le nom du programme tel qu'appelé ne se retrouve pas en argv[0] mais en argv[1]:
[^] # Re: Les arguments
Posté par delio . En réponse au message Utiliser le terminal Linux pour compiler en C. Évalué à 4.
Ça n'est pas un hack, on peut mettre ce qu'on veut dans le argv[0] en argument de execve(). Le fait d'y mettre le nom du programme est juste une convention qui est plus ou mois respectée, mais il y a des exceptions par exemple pour conditionner le fonctionnement d'un programme. Par exemple si on met un tiret avant le nom du shell dans argv[0] il se comporte differemment. ("A login shell is one whose first character of argument zero is a -, or one started with the --login option.")
Il y a aussi des situations réelles comme le shebang où le nom du programme tel qu'appelé ne se retrouve pas en argv[0] mais en argv[1]:
Bizarrement, bash cache ce mecanisme dans les scripts: