Communiquer entre deux processus distincts

Problème

Vous souhaitez partager des données entre deux processus.

Solution

Choisissez parmi l’une de ces solutions :

  • Les sockets locales (sockets UNIX) ;

  • Un tube nommé (fichier FIFO) ;

  • La mémoire partagée ;

  • Un fichier.

Discussion

Avant de discuter ces quatre solutions, signalons qu’il existe d’autres méthodes, en particulier celles utilisant le réseau. Pour celles-ci, orientez-vous vers la lecture des recettes du chapitre "Réseau". Elles ne sont pas à négliger. Peu de différences existent d’ailleurs entre l’utilisation de sockets locales et l’utilisation de sockets TCP/IP.

Les sockets locales et les tubes nommés sont très proches en termes d’utilisation, alors que leur concept est différent. Dans les deux cas, nous créons un fichier spécial, l’un de type socket et l’autre de type tube nommé. Par ailleurs un programme peut écrire dedans et un autre y lire. Ce qui les distingue est leur initialisation respective, qui montre la différence de concept. En effet, le programme qui crée la socket est un serveur, et le programme qui s’y connecte, un client. Pour un tube nommé, un programme le crée, puis tout programme qui ouvre ce tube peut y lire et y écrire, sans notion de se connecter à un autre programme.

Les deux fonctions ci-dessous permettent de créer une socket locale et de s’y...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Limiter l'accès à une section critique
Suivant
Introduction