Programmation systéme en C
Fermé
muslim1987
Messages postés
3
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
19 juin 2008
-
12 avril 2008 à 05:06
sousou - 4 juin 2009 à 21:27
sousou - 4 juin 2009 à 21:27
A voir également:
- Programmation systéme en C
- Restauration systeme - Guide
- Vérificateur des fichiers système - Guide
- Application de programmation - Guide
- Comment refaire le système d'un ordinateur - Guide
- Cloner disque systeme - Guide
2 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 avril 2008 à 08:00
12 avril 2008 à 08:00
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
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$
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 avril 2008 à 08:23
12 avril 2008 à 08:23
Salut,
je te recommande ce livre Programmation système en C sous Linux
je te recommande ce livre Programmation système en C sous Linux
muslim1987
Messages postés
3
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
19 juin 2008
18 juin 2008 à 15:34
18 juin 2008 à 15:34
merci et je suis vraiment desolé car j'ai lu ta reponce qu'aujourd'hui
et encore merci 1000000000000 fois
et encore merci 1000000000000 fois
4 juin 2009 à 21:27