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