La communication inter-processus est la diffusion ou l'échange d'informations entre différents processus. Alors, à quels médias existe-t-il entre différents processus auxquels les deux parties peuvent accéder ? Les espaces utilisateur des processus sont indépendants les uns des autres et ne peuvent généralement pas accéder les uns aux autres. La seule exception est la zone de mémoire partagée. Cependant, l'espace système est un « lieu public », le noyau peut donc évidemment fournir de telles conditions. Sinon, il s’agit d’un périphérique accessible aux deux parties. En ce sens, deux processus peuvent bien entendu également échanger des informations via des fichiers ordinaires sur le disque, ou via certaines entrées et enregistrements dans le « registre » ou d'autres bases de données. Au sens large, il s'agit également d'un moyen de communication inter-processus, mais cela n'est généralement pas considéré comme une « communication inter-processus ». Parce que l'efficacité de ces méthodes de communication est trop faible et que l'exigence des gens en matière de communication inter-processus est d'avoir un certain degré de performance en temps réel.
Recommandations associées : "Tutoriel php"
Plusieurs méthodes principales de communication inter-processus sous Linux :
1. Pipes et pipes nommées
Les pipes peuvent être utilisées pour la communication entre des processus avec des relations d'affinité. Les pipes nommées surmontent la limitation selon laquelle les pipes n'ont pas de noms. fonctionnalité, il permet également la communication entre des processus non liés.
Il existe trois types de tuyaux :
(1) Tuyau ordinaire PIPE : Il y a généralement des restrictions. Premièrement, il est semi-duplex et ne peut être transmis que dans une seule direction. ne peut être utilisé qu'entre les processus parent et enfant.
(2) Stream pipe s_pipe : La première restriction est supprimée et la transmission bidirectionnelle est possible.
(3) Pipe nommée name_pipe : la deuxième restriction est supprimée et la communication peut être effectuée entre de nombreux processus non liés.
2. Signal
Le signal est une méthode de communication relativement complexe, utilisée pour informer le processus récepteur qu'un événement s'est produit, en plus d'être utilisé pour les échanges inter-processus. communication , le processus peut également envoyer des signaux au processus lui-même ; en plus de prendre en charge la fonction sémantique de signal Unix sigal, Linux prend également en charge la fonction de signal sigaction dont la sémantique est conforme à la norme Posix.1 (en fait, cette fonction est basée sur BSD, qui, afin de mettre en œuvre un mécanisme de signal fiable, peut unifier l'interface externe et réimplémenter la fonction de signal en utilisant la fonction sigaction).
3. File d'attente des messages (file d'attente des messages)
La file d'attente des messages est une liste chaînée de messages, y compris la file d'attente des messages Posix systemV. Un processus disposant d'autorisations suffisantes peut ajouter des messages à la file d'attente, et un processus disposant d'autorisations de lecture peut lire les messages de la file d'attente. La file d'attente de messages surmonte les défauts des signaux transportant une petite quantité d'informations, les canaux ne peuvent transporter que des flux d'octets non formatés et la taille des tampons est limitée.
4. Mémoire partagée
permet à plusieurs processus d'accéder au même espace mémoire, ce qui est la forme IPC disponible la plus rapide. Il est conçu pour la moindre efficacité opérationnelle des autres mécanismes de communication. Il est souvent utilisé conjointement avec d'autres mécanismes de communication, tels que les sémaphores, pour réaliser la synchronisation et l'exclusion mutuelle entre les processus.
5. Le sémaphore (sémaphore)
est principalement utilisé comme moyen de synchronisation entre les processus et entre les différents threads d'un même processus.
6. Socket
Un mécanisme de communication inter-processus plus général qui peut être utilisé pour la communication inter-processus entre différentes machines. Il a été développé à l'origine pour la branche BSD des systèmes Unix, mais est désormais généralement portable sur d'autres systèmes de type Unix : les variantes Linux et System V prennent en charge les sockets.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!