[c/c++] IPC -> ?

IPC -> ? [c/c++] - Programmation

Marsh Posté le 28-09-2001 à 07:46:38    

hello,
 
voici mon interrogation du jour:
 
supposons que l'on veuille faire un programme qui fonctionne sur le principe suivant:
 
On commence par lancer un serveur, ou plus précisément un démon.
Puis depuis n'importe quel autre programme client, on veut pouvoir s'adresser à ce demon, pour lui faire executer une tache, et avoir une réponse.
 
Un exemple:
souvent, quand on utilise une API d'un constructeur quelconque, il y a un démon qui se lance (soit de façon automatique au démarage (un service sous NT), soit manuellement par l'utilisateur). Dans le programme client, on inclue une librairie fournie par le constructeur en question, et on commence par reserver des ressources ou autre. Il y a donc une communication entre les 2 processus, mais de façon completement transparente pour le programmeur.
 
Il y a clairement des IPC la dessous, mais ce n'est qu'un terme assez vague. J'imagine une solution à base de sockets, ou le serveur et le client connaissent à l'avance leur numéro de port.
Mais sans cela -> ???
 
 
Si quelqu'un pouvais m'éclairer sur le sujet.
merci d'avance ;)

Reply

Marsh Posté le 28-09-2001 à 07:46:38   

Reply

Marsh Posté le 28-09-2001 à 08:44:42    

les IPC==Inter processus comunication, sous unix regroupent:
-les semaphores
-la memoire partagé
-les message queues
-les pipes
 
le gros probleme, c'est que l'implementation de ces concepts n'est pas tres portable. En pratique, dans ton cas il faudrait utiliser une semaphore pour synchroniser l'acces à la ressource partagé. Pour unix, c'est simple : tu utilise semget, semop, semctl (cf un man pour les param). Pour windows, t'as egalement la notion de semaphore: createsemaphore, opensemaphore...
 
D'un autre coté, tu peux tres bien utiliser une socket (socket !=IPC) mais la difficulté c'est que tu va devoir gerer à la main un protocole de synchronisation ...

Reply

Marsh Posté le 28-09-2001 à 09:26:23    

alors voila:
 
> -les semaphores
ok, c pour la synchronisation. j'utilise deja, dc pas de soucis
 
> -la memoire partagé
ca je n'ai pas encore vraiment regardé
 
> -les message queues
> -les pipes
 
pour les messages par exemple. Le soucis, c'est que pour envoyer un message à un processus, il faut quand même connaitre son identifiant. Et cela, c'est l'OS qui le donne, donc on ne peut pas le connaitre à l'avance.
 
Pour les pipes, c'est un peu le même soucis. oki, sous windows, tu as les 'named pipes', donc tu peux t'en sortir avec ça, si ce n'est que du coup, un seul processus client va pouvoir se connecter en même temps.
 
Donc mon interrogation reste complete ;(

Reply

Marsh Posté le 28-09-2001 à 11:10:13    

avant de ma lancer dans plus de recherches, est-ce que qq1 peut me dire si CORBA (ou DCOM sous win) n'est pas une piste à explorer.
 
qq1 peut m'éclairer?
 
merci d'avance.

Reply

Sujets relatifs:

Leave a Replay

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