@
mungkin menunjukkan soket yang disimpan dalam abstract namespace
yang bukan milik file di sistem file.
Mengutip dari Antarmuka Pemrograman Linux oleh Michael Kerrisk:
57.6 Ruang Nama Soket Abstrak Linux
Yang disebut namespace abstrak adalah fitur khusus Linux yang memungkinkan kita untuk mengikat soket domain UNIX ke sebuah nama tanpa nama itu dibuat di sistem file. Ini memberikan beberapa keuntungan potensial:
- Kami tidak perlu khawatir tentang kemungkinan bentrok dengan nama yang ada di sistem file.
- Tidak perlu memutuskan tautan nama jalur soket setelah kita selesai menggunakan soket. Nama abstrak dihapus secara otomatis saat soket ditutup.
- Kita tidak perlu membuat nama jalur sistem file untuk soket. Ini mungkin berguna di lingkungan chroot, atau jika kami tidak memiliki akses tulis ke sistem file.
Untuk membuat pengikatan abstrak, kita menentukan byte pertama darisun_path bidang sebagai byte nol (\0).[...]
Menampilkan null byte
terdepan untuk menunjukkan jenis soket seperti itu mungkin sulit, jadi mungkin itulah alasan untuk @
terkemuka tanda.
Sesuai man 7 unix
- abstrak:alamat soket abstrak dibedakan oleh fakta bahwa sun_path[0] adalah null byte (
\0
). Semua byte yang tersisa di sun_path menentukan "nama" soket. (Null byte dalam nama tidak memiliki arti khusus.) Nama tidak memiliki hubungan dengan nama jalur sistem file. Alamat soket di namespace ini diberikan oleh sisa byte di sun_path. Ketika alamat soket abstrak dikembalikan oleh gotockname(2), getpeername(2), dan accept(2), panjangnya adalah sizeof(struct sockaddr_un), dan sun_path berisi nama abstrak. Ruang nama soket abstrak adalah ekstensi Linux non-portabel.
Sepertinya ini 'abstrak' - jadi tidak ada jalur nyata di sistem file