Question

Quelle est la différence entre les sockets de domaine IPC et Unix et les tubes nommés?

J’ai reçu des définitions vagues de différents livres mais je n’ai pas pu déterminer avec précision lequel devrait être utilisé à quel endroit.

Était-ce utile?

La solution

Pratiquement tous les processus de communication entre processus peuvent être considérés comme une forme de CPI.

Par exemple:

  1. Pipes non nommées (cat file.txt | grep foo) ou Pipes nommées .
  2. Sockets de domaine Unix
  3. Sockets TCP ou UDP
  4. Sockets Netlink sur Linux
  5. Divers mécanismes de mémoire partagée, tels que les fichiers mappés en mémoire
  6. Transmission de messages à grande vitesse, telle que ZeroMQ

Autres conseils

Comme l'a indiqué qrdl, les sockets du domaine UNIX et les canaux nommés sont deux mécanismes IPC.

Parmi ces deux canaux, les canaux nommés sont plus simples à utiliser, mais beaucoup moins flexibles que les sockets de domaine UNIX. Par exemple, si vous attendez potentiellement plus d'un processus de lecture pour chaque processus d'écriture, les sockets du domaine UNIX sont indispensables. si vous vous attendez à ce que le processus de lecture s’arrête et se lance pendant son exécution, vous aurez besoin de sockets de domaine UNIX.

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

Merci de vous être concentré sur la question, quelques 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 la mémoire tampon dans la mémoire du noyau. Par défaut, il s’agit du mode duplex intégral.

Les canaux nommés sont identifiés par leur point d'accès, un fichier conservé dans le système de fichiers pour la gestion des données. Un canal nommé par défaut prend en charge les opérations de lecture et écriture bloquées. Toutefois, il est possible de faire en sorte que les canaux nommés prennent en charge les opérations non bloquantes en spécifiant l'indicateur O_NONBLOCK lors de leur ouverture. Un canal nommé doit être ouvert en lecture seule ou en écriture seule. Il ne doit pas être ouvert en lecture-écriture car il s'agit d'un canal unidirectionnel semi-duplex.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top