Bonjour,
Le programme suivant s’exécute de manière aléatoire. Soit il produit le premier résultat, soit le deuxième. Pourquoi l’un et l’autre peuvent-ils arriver ?
Le code :
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
int main(void)
{
int ret_pid = fork();
if (ret_pid == -1)
{
perror ("Erreur lors du fork: ");
return EXIT_FAILURE;
}
if (ret_pid == 0) /* retour 0 -> processus fils */
{
// (pid : , ppid : )
printf ("Je suis le fils (pid : %d, ppid : %d).\n", getpid(), getppid());
}
else /* autre retour -> processus père */
{
// (pid : , ppid : )
printf ("Je suis le père (pid : %d, ppid : %d).\n", getpid(), getppid());
}
return EXIT_SUCCESS;
}
Le problème, c’est que dans la première situation, getppid ne revoie pas le vrai pid du père….
+0
-0