Cloner un processus avec l'instruction fork(); [code en c] [gcc]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 051 fois - Téléchargée 38 fois

Contenu du snippet

Dans cet exemple je vais vus montre comment cloner un processus,
dejas un processus est une tache qu'execute le systeme d'eploitation, par exemple quand vous lancer une application quelquoncques,
le systeme lui attribut un identifiant, par exemple 2300 cela correspond au PID (Processus IDentification)
Le faite de cloner ce processus est que l'application va relancer une seconde fois exactement la meme application,.
Petite note: le code suivant a ete ecrit pour les systemes d'exploitation type unix.

Source / Exemple :


#include <unistd.h>  //Pour l'instruction fork();
#include <stdio.h>  
#include <signal.h>  //pour l'instruction kill et le signal SIGKILL

int main()
{
  int i;
  int pid;
  char c;
  
  if (pid=fork()) //Si le pid du pere est egal au pid du fils
  {
    printf("voulez-vous tuer le fils?"); //On demande si on veut tuer le fils
    scanf("%c",&c);
    if (c=='o') //Si o est taper
    {
      kill(pid,SIGKILL); //Alors on le tu via l'instruction kill();
    }
  }
  else 
  {
    while(1) //Si non tant que c'est pas le cas on fait une boule infinie qui affiche la valeur de i 
    {
      printf("%d",i++);
    }
  }
}

A voir également

Ajouter un commentaire Commentaires
Messages postés
25
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
28 mars 2006

ca marche pas du tout....

il faut faire :
#include <sys/types.h>
//...
pid_t pid = fork() ;

switch (pid) {
case 0 : code pour le fils;
case -1 : erreur;
default : code pour le pere
}

d'autre part i n'est pas initialise ... donc ca compile pas mdr
Messages postés
16
Date d'inscription
samedi 2 janvier 2010
Statut
Membre
Dernière intervention
28 octobre 2013

Lu a tous ct pour savoir a koi sert ce script??
Messages postés
3
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
11 octobre 2005

Bonjour j'aimerai savoir comment utiliser la fonction fork() sous windows et surtout savoir si c'est possible.
Merci !
Messages postés
1
Date d'inscription
vendredi 22 novembre 2002
Statut
Membre
Dernière intervention
23 novembre 2002

salut, quelques corrections à ton code:
il faut que tu fasses un getpid() pour avoir le pid.
autre information pour ta culture personnelle la fonction pour avoir le pid du père est getppid();
il faut que tu regardes les man de ta distribution préférée avant de pondre un code qui ne marche pas. il faut que les gens lise un code propre pour qu'ils puissent apprendre quelquechose, alors ait l'obligence de vérifier tes sources la prochaine fois... merci
Messages postés
855
Date d'inscription
mardi 19 novembre 2002
Statut
Membre
Dernière intervention
28 juillet 2009
1
heu.. je crois que tu n'as pas vraiment compris ce code, disponible sur le net.
pid=fork n'a rien a voir avec "Si le pid du pere est egal au pid du fils"...

ca affecte la valeur de fork au pid, valeur necessaire pour tuer le processus si necessaire...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.