Il @
probabilmente indica un socket contenuto in un abstract namespace
che non appartiene a un file nel filesystem.
Citazione da The Linux Programming Interface di Michael Kerrisk:
57.6 Lo spazio dei nomi del socket astratto di Linux
Il cosiddetto spazio dei nomi astratto è una caratteristica specifica di Linux che ci consente di associare un socket di dominio UNIX a un nome senza che quel nome venga creato nel file system. Ciò fornisce alcuni potenziali vantaggi:
- Non dobbiamo preoccuparci di possibili collisioni con nomi esistenti nel file system.
- Non è necessario scollegare il percorso del socket quando abbiamo finito di usare il socket. Il nome astratto viene rimosso automaticamente alla chiusura del socket.
- Non è necessario creare un percorso del file system per il socket. Questo può essere utile in un ambiente chroot o se non abbiamo accesso in scrittura a un file system.
Per creare un'associazione astratta, specifichiamo il primo byte di sun_path campo come byte nullo (\0).[...]
Visualizzazione di un null byte
iniziale denotare un tale tipo di socket può essere difficile, quindi questa è forse la ragione del @
iniziale cartello.
Come da man 7 unix
- abstract:un indirizzo socket astratto si distingue per il fatto che sun_path[0] è un byte nullo (
\0
). Tutti i restanti byte in sun_path definiscono il "nome" del socket. (I byte nulli nel nome non hanno un significato speciale.) Il nome non ha alcuna connessione con i percorsi del file system. L'indirizzo del socket in questo namespace è dato dal resto dei byte in sun_path. Quando l'indirizzo di un socket astratto viene restituito da getsockname(2), getpeername(2) e accept(2), la sua lunghezza è sizeof(struct sockaddr_un) e sun_path contiene il nome astratto. Lo spazio dei nomi socket astratto è un'estensione Linux non portatile.
Sembra che questi siano "astratti", quindi non è presente alcun percorso reale sul filesystem