GNU/Linux >> Tutoriels Linux >  >> Linux

Que signifie le symbole @ au début d'un chemin de socket de domaine unix sous Linux ?

Le @ indique probablement une prise contenue dans un abstract namespace qui n'appartient pas à un fichier du système de fichiers.

Citation de L'interface de programmation Linux par Michael Kerrisk :

57.6 L'espace de noms de socket abstrait Linux

Le soi-disant espace de noms abstrait est une fonctionnalité spécifique à Linux qui nous permet de lier un socket de domaine UNIX à un nom sans que ce nom soit créé dans le système de fichiers. Cela offre quelques avantages potentiels :

  • Nous n'avons pas à nous soucier d'éventuelles collisions avec des noms existants dans le système de fichiers.
  • Il n'est pas nécessaire de dissocier le chemin d'accès de la socket lorsque nous avons fini d'utiliser la socket. Le nom abstrait est automatiquement supprimé lorsque le socket est fermé.
  • Nous n'avons pas besoin de créer un chemin d'accès au système de fichiers pour le socket. Cela peut être utile dans un environnement chroot, ou si nous n'avons pas d'accès en écriture à un système de fichiers.

Pour créer une liaison abstraite, nous spécifions le premier octet du sun_path champ sous la forme d'un octet nul (\0).[...]

Affichage d'un null byte devant désigner un tel type de socket peut être difficile, c'est peut-être la raison du premier @ pancarte.


Selon man 7 unix

  • abstract :une adresse de socket abstraite se distingue par le fait que sun_path[0] est un octet nul (\0 ). Tous les octets restants dans sun_path définissent le "nom" de la socket. (Les octets nuls dans le nom n'ont aucune signification particulière.) Le nom n'a aucun lien avec les noms de chemin du système de fichiers. L'adresse du socket dans cet espace de noms est donnée par le reste des octets dans sun_path. Lorsque l'adresse d'une socket abstraite est renvoyée par getsockname(2), getpeername(2) et accept(2), sa longueur est sizeof(struct sockaddr_un) et sun_path contient le nom abstrait. L'espace de noms de socket abstrait est une extension Linux non portable.

On dirait qu'ils sont "abstraits" - donc aucun chemin réel n'est présent sur le système de fichiers


Linux
  1. Que signifie __init dans le code du noyau Linux ?

  2. Quel est l'équivalent Unix/Linux des E/S enregistrées ?

  3. Quel est l'emplacement correct du fichier mysql.sock sous Linux

  4. Que signifie la charge moyenne sous Unix/Linux ?

  5. Que signifie le symbole du tuyau linux | fais?

Quelle est la différence entre Linux et Unix ?

Chemin absolu ou relatif sous Linux :quelle est la différence ?

Qu'est-ce que la table des processus Linux ? En quoi cela consiste?

Quel est l'effet de la définition d'un socket Linux - haute priorité ?

Qu'est-ce que le message Vous avez un nouveau message sous Linux/UNIX ?

Que signifie le nom de l'interface eth0 sous Linux ?