Programme se lançant lui même n fois !

Programme se lançant lui même n fois ! - C - Programmation

Marsh Posté le 03-10-2009 à 17:33:31    

Bonjour,
 
Je voudrai faire un programme qui se lance lui même grâce à la fonction exec !
 
Je n'arrive qu'à le faire de façon indéterminé c'est à dire le programme ne cesse de s'appeler lui même !  
 
int main(int argc, char*argv[]) {
        int i = 1;
 printf("%d \n",i); // affiche i
 
 execl("bin/test","test",NULL);
 perror ("execl" );
 }
 return EXIT_SUCCESS;
}
 
 
moi je voudrai qu'il s'arrête au bout de n fois et donc qu'il affiche la valeur de i n fois
 
Comment faire ?
 
Merci !
 
 

Reply

Marsh Posté le 03-10-2009 à 17:33:31   

Reply

Marsh Posté le 03-10-2009 à 18:05:38    

fork()

Reply

Marsh Posté le 03-10-2009 à 22:18:21    

j'y est pensé !
j'y réfléchi en ce moment !

Reply

Marsh Posté le 03-10-2009 à 22:26:01    

en fin de compte je ne voie pas la solution !

Reply

Marsh Posté le 04-10-2009 à 01:12:18    

fork() c'est le mieux.
 
Sinon solution simple:
Tu concatenes un nombre qui est le nombre de sous-execution restantes, et tu le decrementes a chaque appel.
 
tu lances:
exec("/bin/test " ++++(strcat ou snprintf) ++++ "5" );
qui lance:
exec("/bin/test " ++++(strcat ou snprintf) ++++ "4" );
qui lui-meme lance:
exec("/bin/test " ++++(strcat ou snprintf) ++++ "3" );
qui lui-meme lance:
exec("/bin/test " ++++(strcat ou snprintf) ++++ "2" );
qui lui-meme lance:
exec("/bin/test " ++++(strcat ou snprintf) ++++ "1" );
qui lui-meme lance:
exec("/bin/test " ++++(strcat ou snprintf) ++++ "0" );

Reply

Marsh Posté le 04-10-2009 à 23:40:17    

amaowned a écrit :

j'y est pensé !
j'y réfléchi en ce moment !

 
amaowned a écrit :

en fin de compte je ne voie pas la solution !


Tu as donc éliminé fork() de ton horizon de solutions. Est-il possible d'en connaître la raison ?

 
ravenX11 a écrit :

Sinon solution simple:
Tu concatenes un nombre qui est le nombre de sous-execution restantes, et tu le decrementes a chaque appel.

 

Urgh.


Message édité par Elmoricq le 04-10-2009 à 23:40:41
Reply

Marsh Posté le 05-10-2009 à 09:25:43    

Surtout que c'est le but d'un fork

Reply

Marsh Posté le 08-10-2009 à 00:07:30    

bon j'ai réussi ( depuis fort long temps)! Je suis passé par les arguments de la fonction main pour y arriver !  
 
Honnêtement je ne vois pas comment je pourrai faire avec fork () ! Si dans le fork() je lui dit d'exécuter le même programme il va me recréer un autre fork qui va lui exécuter le même programme et ainsi de suite ...

Reply

Marsh Posté le 08-10-2009 à 01:44:11    

avec le fork() tu peux savoir si tu est dans le père ou le fils, il suffit de faire tes multiples fork() que si tu est toujours dans le père.

Reply

Sujets relatifs:

Leave a Replay

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