8
votes

IPC VS Domain Sock VS Nommé Tuyaux

Quelle est la différence entre les prises de domaine IPC et UNIX et les pipes nommées?

J'ai des définitions vagues de divers livres mais ne pouvaient pas obtenir de clarté sur lequel on devrait être utilisé où.


1 commentaires

Ce fil semble avoir plus d'attention: Stackoverflow. com / questions / 9475442 / ...


4 Réponses :


4
votes

IPC signifie communications inter-processus . Les sockets de domaine UNIX et les tuyaux nommés ne sont que deux mécanismes IPC, décrits dans Wikipedia:


0 commentaires

6
votes

comme indiqué QRDL, les sockets Unix-domain et les tuyaux nommés sont à la fois des mécanismes IPC.

de ces deux, des tuyaux nommés sont plus simples de travailler, mais beaucoup moins flexibles que les prises UNIX-domaines. Par exemple, si vous attendez potentiellement plus d'un processus de lecture pour chaque processus d'écriture, les prises UNIX-domain sont indispensables; Si vous vous attendez à ce que le processus de lecture s'arrête et commence pendant l'exécution du processus d'écriture, vous aurez besoin des prises UNIX-domain.


0 commentaires

0
votes

Merci de vous concentrer sur la question, peu de fonctionnalités mises à jour:

Dans les sockets de domaine, la communication réelle (l'échange de données) n'utilise pas le système de fichiers, mais des tampons dans la mémoire du noyau. Par défaut, il est en mode duplex complet.

Les tuyaux nommés sont identifiés par leur point d'accès, un fichier conservé sur le système de fichiers pour la gestion des données. Un tuyau nommé par défaut prend en charge les opérations de lecture et d'écriture bloquées. Cependant, il est possible de faire appel aux tuyaux nommés des opérations non bloquantes en spécifiant le drapeau O_NONBLOCK tout en les ouvrant. Un tuyau nommé doit être ouvert uniquement en lecture seule ou en écriture. Il ne doit pas être ouvert pour lire-écrire car il est à moitié duplex, un canal à sens unique.


1 commentaires

OP a posé des questions sur les sockets de domaine. Les prises de domaine sont généralement implémentées sur des tuyaux afin qu'ils soient aussi rapides que des tuyaux. Les sockets de domaine sont utiles car elles ont exactement la même interface que les sockets réseau (une seule famille de socket) (une seule famille de sockets), donc si votre application prend en charge les sockets et que vous avez constaté que les deux parties sont situées sur le même ordinateur, vous pouvez facilement passer aux prises de domaine pour accélérer les choses (X Windows le fait). Donc, vous répondez est incorrect.



6
votes

À peu près n'importe quelle manière que deux processus communiquent les uns avec les autres pourraient être considérés comme une forme d'IPC.

Par exemple:

  1. pipes non nommées (fichier chat.txt.txt | grep foo) ou Tuyaux nommés
  2. Sockets de domaine UNIX
  3. Sockets TCP ou UDP
  4. NetLink Sockets sur Linux
  5. Divers mécanismes de mémoire partagés tels que des fichiers mappés en mémoire
  6. message à grande vitesse passant comme Zeromq

0 commentaires