Communication Intra Executable (signal / kill)

Signaler
Messages postés
60
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
19 octobre 2010
-
Messages postés
60
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
19 octobre 2010
-
Bonjour,

Dans le cadre d'un projet genre "chat", je doit faire communiquer 2 threads entre eux a l'aide de:
signal() en réception
kill() en envoyeur

J'arrive via le processus client auquel je passe le pid du serveur a envoyer les signaux sur le serveur. Le problème c'est que maintenant j'aimerais récupérer sur le programme serveur le pid du client pour faire une liaison serveur --> client.
je n'ai malheureusement le droit qu'au SIGUSR1 // SIGUSR2.
J'ai pensé envoyer en premier message client --> serveur le PID du client. Mais je pense pas que se soit approprier en cas de perte du signal ou autre.

Voila, merci pour vos futur reponse.


There is no place like 127.0.0.1 /

3 réponses

Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

Tient j'ai déjà vu ça quelque part... ho c'est exactement le sujet du projet "Minitalk" d'Epitech Soit dit en passant ce ne sont pas des threads que tu fais communiquer mais des processus bien distincts (l'implémentation des threads pouvant varier on va éviter de faire la confusion).

Pour en revenir à ta question, que le client donne son PID est pourtant un très bon début et permet d'obtenir d'excellents résultats au final (et ça j'en sais quelque chose). La perte du signal est une chose, adopter un protocole permettant de gérer ce cas en est une autre qui te permet de passer outre ce problème. Regarde donc le fonctionnement de TCP pour obtenir quelques pistes, s'en inspirer peu être bon.
Messages postés
60
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
19 octobre 2010

Oui c'est bien le minitalk :)
Je pense que je vais faire une première transmission fortement temporisé pour récupérer le PID du client. Puis tester la connexion serveur --> client voir si le PID a bien été transmis.
Good, merci =)

There is no place like 127.0.0.1 /
Messages postés
60
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
19 octobre 2010

Pour ceux qui aurait un projet similaire a faire, un petit conseil:
--_> Faites tout en recursif, sans aucune boucle while :)

There is no place like 127.0.0.1 /