
Envoyé par
Alex le grand
marche bien et je ne sais pas pourquoi car le code :
marchait egalement sur les machines de mon ecole.
Peut etre du c'est a la distribution linux?
C'est écrit dans l'extrait que je te donne dans mon précédent commentaire. En français, cela donne :
« Sous Linux, argv et envp peuvent être spécifiés comme NULL, ce qui a le même effet que spécifier ces arguments en tant que pointeurs vers des listes contenant uniquement un pointeur NULL. Ne profitez pas de cette non-fonctionnalité : ce n'est ni standard, ni portable. Sur la plupart des autres systèmes Unix, faire cela conduit à une erreur »
Autrement dit, Linux a solidifié cette faiblesse et c'est normal, mais cela ne veut pas dire qu'il est légal de l'écrire. Selon les systèmes, cela provoquera un comportement indéterminé.
Ensuite, je n'ai pas lancé ton programme, comme tu fais un exec(), on ne sait pas à quel moment ça plante : soit c'est ton programme père (peu probable), soit c'est la CRT au démarrage du fils, soit c'est le code du fils lui-même qui essaie de lire son propre nom et qui tombe sur un pointeur NULL complètement inattendu (ce qui reste sale : la validité d'un pointeur doit toujours être vérifiée).
Partager