Ping pong en C
Résolu
Kikoo, c'est encore moi :p
Voilà, toujours avec l'envoi de signaux, je dois créer un genre de "ping pong" en C
En fait, on a un programme père, qui se créer un fils, et joue au ping pong avec lui
Détails du programme :
le père dis au fils de commencer
le fils envoi la balle (affichage de "ping" en fait)
donc le père attends l'envoi du fils, et renvoi à nouveau la balle (affichage de "pong")
le programme s'arrete après 10 échanges.
Pourriez vous m'aider sur les envois de signaux, si ce n'est pas trop demandé?
Merci bocoup d'avance!
--
Plus t'avance moins vite, moins t'avance plus vite
Voilà, toujours avec l'envoi de signaux, je dois créer un genre de "ping pong" en C
En fait, on a un programme père, qui se créer un fils, et joue au ping pong avec lui
Détails du programme :
le père dis au fils de commencer
le fils envoi la balle (affichage de "ping" en fait)
donc le père attends l'envoi du fils, et renvoi à nouveau la balle (affichage de "pong")
le programme s'arrete après 10 échanges.
Pourriez vous m'aider sur les envois de signaux, si ce n'est pas trop demandé?
Merci bocoup d'avance!
--
Plus t'avance moins vite, moins t'avance plus vite
Configuration: Linux Firefox 1.0.7
A voir également:
- Ping pong c
- Port ping ✓ - Forum Programmation
- Ping url ✓ - Forum Windows
- T'as du ping - Forum Réseau
- Définition de ping ✓ - Forum Réseau
- Port icmp ✓ - Forum Réseau
6 réponses
Puisque tu as coché le sujet et résolu, peux tu donner le code final afin d'en faire profiter les personnes qui passeront sur ce post ?
Pour moi ça se fait à base de "fork+pipe" ou de "popen" mais c'est assez lointain.
Dans un premier jet tu peux regarder l'aide en tapant dans une console linux ou dans google
Quelques liens intéressants :
http://www.gidforums.com/t-3369.html
http://web.umr.edu/~ercal/284/PipeExamples/Pipe2.c
Bonne chance
Dans un premier jet tu peux regarder l'aide en tapant dans une console linux ou dans google
man popen man pipe man fork
Quelques liens intéressants :
http://www.gidforums.com/t-3369.html
http://web.umr.edu/~ercal/284/PipeExamples/Pipe2.c
Bonne chance
Si tu regardes le deuxième lien (voici la version légèrement corrigée)
... tu as déjà le premier ping-pong (communication du fils vers le père). Il faut juste que le père communique au fils via un autre pipe qu'il a reçu le message. Le fils doit simplement attendre cet acquittement avant d'émettre un nouveau message.
Bonne chance
#define MSGSIZE 32
char *msg1 = "hello #1";
char *msg2 = "hello #2";
char *msg3 = "hello #3";
int main()
{ char inbuf[MSGSIZE];
int p[2], j, pid;
/* open pipe */
if(pipe(p) == -1)
{ perror("pipe call error");
return 1;
}
switch(pid = fork()){
case -1: perror("error: fork call");
return 2;
case 0: /* if child then write down pipe */
close(p[0]); /* first close the read end of the pipe */
write(p[1], msg1, MSGSIZE);
write(p[1], msg2, MSGSIZE);
write(p[1], msg3, MSGSIZE);
break;
default: /* parent reads pipe */
close(p[1]); /* first close the write end of the pipe */
for(j=0; j<3; j++)
{ read(p[0], inbuf, MSGSIZE);
printf("Parent: %s\n", inbuf);
}
wait(NULL);
}
return 0;
}
... tu as déjà le premier ping-pong (communication du fils vers le père). Il faut juste que le père communique au fils via un autre pipe qu'il a reçu le message. Le fils doit simplement attendre cet acquittement avant d'émettre un nouveau message.
Bonne chance
Merci mamimando!! J'ai un dernier truc à savoir, en fait j'ai le corps du programme, et je dois absolument utiliser l'envoi de signaux...
voici le code:
maintenant, il faut que que je remplace les commentaires par le code d'envoi et de récéption de signaux..plus que ça!!
S'il vous plaiiiiiiiiit!!!!!!
voici le code:
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include<signal.h>
void execfils(int n){
printf("ping!!!\n");
}
int main(int argc, char**argv) {
//déclaration des variables
pid_t pid,fils;
int balle=0,pg=0,balle2=0,i=2;
printf("Allez mon fils commence!!\n");
getchar();
//création du fils joueur
pid = fork();
//execution du fils joueur
if (pid == 0) {
while(balle2<9){
//on récéptionne le signal du père
//on réarme le signal
//on envoie le signal au père
balle++;
}
}
//execution du pere joueur
else if (pid != -1) {
//création du supporter
fils=fork();
if(fils==0){
while(balle<10){
printf("Je suis %d ; Vas-y papa!!\n",getpid());
sleep(2);
}
}
else{
while(balle<10){
//on envoi le signal au fils
//on attends le nouveau signal du fils
//on réarme le signal
balle++;
}
//le père a perdu, il tue ses fils!
if(balle==10){
printf("merdeuh j'ai perdu!!!!\n");
kill(fils,9);
kill(pid,9);
}
}
}
exit(0);
}
maintenant, il faut que que je remplace les commentaires par le code d'envoi et de récéption de signaux..plus que ça!!
S'il vous plaiiiiiiiiit!!!!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question