GNU/Linux >> Znalost Linux >  >> Linux

Co označuje symbol @ na začátku cesty soketu domény unix v Linuxu?

@ pravděpodobně označuje soket uložený v abstract namespace který nepatří k souboru v souborovém systému.

Citace z The Linux Programming Interface od Michaela Kerriska:

57.6 The Linux Abstract Socket Namespace

Takzvaný abstraktní jmenný prostor je funkce specifická pro Linux, která nám umožňuje svázat soket domény UNIX se jménem, ​​aniž by bylo toto jméno vytvořeno v systému souborů. To poskytuje několik potenciálních výhod:

  • Nemusíme se obávat možných kolizí s existujícími názvy v systému souborů.
  • Po ukončení používání soketu není nutné odpojovat cestu k soketu. Abstraktní název je automaticky odstraněn, když je soket uzavřen.
  • Nemusíme vytvářet cestu k systému souborů pro soket. To může být užitečné v prostředí chroot, nebo pokud nemáme přístup k zápisu do systému souborů.

Chcete-li vytvořit abstraktní vazbu, určíme první bajt parametru sun_path pole jako prázdný bajt (\0).[...]

Zobrazuje úvodní null byte označit takový typ zásuvky může být obtížné, takže to je možná důvod pro úvodní @ podepsat.


Podle man 7 unix

  • abstraktní:abstraktní adresa soketu se vyznačuje tím, že sun_path[0] je prázdný bajt (\0 ). Všechny zbývající bajty v sun_path definují "jméno" soketu. (Nulové bajty v názvu nemají žádný zvláštní význam.) Název nemá žádnou souvislost s cestami systému souborů. Adresa soketu v tomto jmenném prostoru je dána zbytkem bajtů v sun_path. Když getockname(2), getpeername(2) a accept(2) vrátí adresu abstraktního soketu, jeho délka je sizeof(struct sockaddr_un) a cesta sun_path obsahuje abstraktní jméno. Abstraktní jmenný prostor soketu je nepřenosné rozšíření Linuxu.

Vypadá to, že jsou „abstraktní“ – takže na souborovém systému není přítomna žádná skutečná cesta


Linux
  1. Co znamená P a E v Exec Family Of Calls?

  2. Linux – Jak lze zkontrolovat informace o struktuře adresářů souboru Unix/linux?

  3. Jak funguje příkaz 'ls' v Linuxu/Unixu?

  1. Co znamená průměrná zátěž na Unix/Linux?

  2. Co znamená symbol linux pipe | dělat?

  3. Co znamená název rozhraní eth0 v Linuxu?

  1. Co je POSIX? Proč je to pro uživatele Linuxu/UNIXu důležité?

  2. Co znamená __init v kódu jádra Linuxu?

  3. Co znamená přípona .d v Linuxu?