Salut,
1. il faut installer le paquet libc6-dev
2. je ne vois pas pourquoi tu veux afficher le retour de fork vu que tu traites déjà les cas avec switch
fork() retourne :
-1 si erreur (en ce moment la variable errno contiendra le code d'erreur : ENOMEM - pas de mémore dispo, EAGAIN - le système n'a pas de la place, mais il aura bientôpt)
0 - on se trouve dans le processus fils
PID fils - on se trouve dans le processus père
Ce qu'on veut récuperer c'est plutôt les PID des processus, et pour ça on utilise l'appel-système getpid()
fork ne fait que dupliquer le retour appelant
le retour de fork permet de faire distincition entre le processus père et fils.
Voici un exemple
lami20j@debian:~/trash$ cat pid.c
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<errno.h>
int main ()
{
pid_t pid_fils;
do {
pid_fils = fork ();
} while (pid_fils == -1 && errno == EAGAIN);
switch (pid_fils) {
case -1:
fprintf (stderr, "Erreur fork() : %d\n", errno);
return 1;
case 0: /* processus fils */
fprintf (stdout, "Fils : PID = %ld, Père = %ld\n",
(long) getpid (), (long) getppid ());
break;
default: /*processus père */
fprintf (stdout, "Père : PID = %ld ; PPID = %ld, Fils : PID = %ld\n",
(long) getpid (), (long) getppid (), (long) pid_fils);
break;
}
return 0;
}
lami20j@debian:~/trash$ gcc pid.c -o pid
lami20j@debian:~/trash$ ./pid
Fils : PID = 3387, Père = 3386
Père : PID = 3386 ; PPID = 2957, Fils : PID = 3387
lami20j@debian:~/trash$ echo $$
2957
lami20j@debian:~/trash$
106485010510997108