Ping pong en C
Résolu/Fermé
blackdam
Messages postés
327
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
13 février 2015
-
13 juin 2007 à 10:46
mamiemando Messages postés 33443 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 décembre 2024 - 14 juin 2007 à 19:17
mamiemando Messages postés 33443 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 décembre 2024 - 14 juin 2007 à 19:17
A voir également:
- Ping pong c
- Ping port ✓ - Forum Programmation
- Port ping ✓ - Forum Réseau
- T'as du ping expression ✓ - Forum Réseau
- Musique ping pong electro ✓ - Forum Audio
- T'as du ping def - Forum Réseau
6 réponses
mamiemando
Messages postés
33443
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
19 décembre 2024
7 811
14 juin 2007 à 19:17
14 juin 2007 à 19:17
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 ?
mamiemando
Messages postés
33443
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
19 décembre 2024
7 811
13 juin 2007 à 18:10
13 juin 2007 à 18:10
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
mamiemando
Messages postés
33443
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
19 décembre 2024
7 811
14 juin 2007 à 10:04
14 juin 2007 à 10:04
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
blackdam
Messages postés
327
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
13 février 2015
35
14 juin 2007 à 10:53
14 juin 2007 à 10:53
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
blackdam
Messages postés
327
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
13 février 2015
35
14 juin 2007 à 08:12
14 juin 2007 à 08:12
Oui merci je vais me pencher sur le fork+pipe, je vais voir quelques tutos sur internet, en attendant si quelqu'un peux encore m'aider je ne dis pas non!! ;)
blackdam
Messages postés
327
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
13 février 2015
35
14 juin 2007 à 15:32
14 juin 2007 à 15:32
--
Plus t'avance moins vite, moins t'avance plus vite
Plus t'avance moins vite, moins t'avance plus vite