[C/C++] Exécuter plusieurs fonctions en même temps : fork ???

Exécuter plusieurs fonctions en même temps : fork ??? [C/C++] - Programmation

Marsh Posté le 16-08-2002 à 23:33:57    

Bonjour,
 
En fait j'aimerai exécuter 10 fonctions en même temps, ou du moins lancer la première et ne plus m'en soucier, et sans attendre qu'elle finisse donc, lancer la 2eme, puis la 3eme, et ainsi de suite.
 
Elles sont donc lancées les unes à la suite des autres quasimment en même temps puis finissent toute seules.
 
Je pense donc qu'il faut créer un processus fils et exécuter cette fonction à partir du processus fils, etc...
 
Mais j'ai pas réussi après tatonnement multiples.
Voyons le code suivant, qui lance 10 fois la même fonction :
 
 
 

Code :
  1. pid_t pid = fork();
  2. for (int i=0; i< 10; i++)
  3. {
  4. if (pid > 0)
  5.   while(waitpid(-1, NULL, WNOHANG) > 0);
  6. else
  7.   {
  8.   if (pid == 0)
  9.    mafonction();
  10.   }
  11. else
  12.    perror("Impossible de créer le processus fils " );


 
En fait ça fonctionne pas car waitpid() dans ce cas attend que le fils soit terminé avant de continer (ce que je ne veux pas, je veux que le père continue en laissant son fils se débrouiller), mais si je vire la fonction waitpid(), 'perror' est appelé, ce qui veux dire que le fils n'est pas créé.
 
 
Donc si vous avez compris, pouvez-vous me dire le bon code ?
Ou bien un lien vers de la doc plus fournie que 'man fork' :D
 
Merci :hello:


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 16-08-2002 à 23:33:57   

Reply

Marsh Posté le 16-08-2002 à 23:46:26    

man signal
man 7 signal
 
rechercher SIGCHLD


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 16-08-2002 à 23:54:02    

kadreg a écrit a écrit :

man signal
man 7 signal
 
rechercher SIGCHLD




 
merci je vais chercher de ce côté ! :)


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed