Réponse acceptée !
Salut,
sigchld_action.sa_handler = &clean_up_child_process;
Ici, tu met en place l'adresse de clean_up_child_process dans une structure.
Comme l'indique le champ de cette structure, ta fonction est un handler (On parle aussi de callback).
Tu passe ensuite cette structure en argument de sigaction (ici, l'aide de sigaction et les pages de man).
La fonction clean_up_child_process va en fait être appelée non pas par ton propre code, mais par Linux.
Linux s'attend à ce que l'adresse que tu lui donne corresponde à l'adresse d'une fonction qui attend un entier en paramètre, et va passer ce paramètre en argument, de manière à ce que tu le récupère. Si tu met un argument supplémentaire à cleanup, ou que tu enlève le int,le programme a de bonne chances de planter à cause d'un décalage de pile.
clean_up_child_process va être appelé par Linux quand il souhaitera t'informer de l'arrivé d'un message SIGCHLD (Autrement dit, à la fin d'exécution d'un processus fils).
Je suis pas sûre d'avoir été très clair...