GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa indica il simbolo @ all'inizio di un percorso socket di dominio unix in Linux?

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


Linux
  1. Come funziona il comando 'ls' in Linux/Unix?

  2. Qual è la posizione corretta del file mysql.sock su Linux

  3. Cosa significa carico medio su Unix/Linux?

  4. qual è la lunghezza massima della password su un sistema unix/linux?

  5. Cos'è il messaggio Hai una nuova posta in Linux/UNIX?

Qual è la differenza tra Linux e Unix?

Percorso assoluto vs relativo in Linux:qual è la differenza?

Qual è la tabella dei processi Linux? In cosa consiste?

Qual è l'effetto dell'impostazione di un socket linux - alta priorità?

Cosa significa il nome dell'interfaccia eth0 in Linux?

Cosa significa il suffisso .d in Linux?