GNU/Linux >> Belajar Linux >  >> Linux

Apa yang ditunjukkan oleh simbol @ di awal jalur soket domain unix di Linux?

@ 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


Linux
  1. Apa itu POSIX? Mengapa Penting bagi Pengguna Linux/UNIX?

  2. Apa yang Dilambangkan P Dan E Dalam Keluarga Panggilan Exec?

  3. Linux – Bagaimana Cara Memeriksa Informasi Struktur Direktori File Unix/linux?

  1. Linux vs. Unix:Apa bedanya?

  2. Bagaimana cara kerja perintah 'ls' di Linux/Unix?

  3. Apa arti __init dalam kode kernel Linux?

  1. Apa arti &di akhir perintah linux?

  2. Apa yang setara dengan Unix/Linux dari I/O Terdaftar?

  3. Apakah Anda memiliki pesan email baru di Linux/UNIX?