'@' İle Linux init yerel soketi


0

Yerel adlandırılmış ve ağ soketlerini C'de kullanma konusunda deneyimim var, ancak Linux'ta (Fedora 14), GNOME sistem izleyicisini kullanarak, initişlem tarafından kullanılan yerel bir soketin yolu olduğunu fark ettim "@/com/ubuntu/upstart". Fark ettiğim bir şey, bu yolun ('@' olmadan) var olmadığı, ancak '@' nin ne anlama geldiği hakkında hiçbir fikrim yok. Bunu başka hiçbir yerde görmedim.

Bazı araştırmalar init'başlangıç' daemonunun Linux'a oldukça eski bir giriş olduğunu ve muhtemelen başka bir eski daemonun yerini aldığını söylüyor . Ubuntu web sitesinin bir alt etki alanı üzerinde barındırılıyor, bu nedenle bu anlamda bir bağlantı hissediyorum, ama '@' ne anlama geliyor? Ve neden var olmayan bir yol onu takip ediyor?

Teşekkürler

Yanıtlar:


1

Gördüğünüz şey soyut bir soket , Linux'a özgü özel bir soket. Gönderen adam 7 Unix :

   *  abstract: an abstract socket address is distinguished by the fact that
      sun_path[0] is a null byte ('\0').  The socket's address in this namespace
      is given by the additional bytes in sun_path that are covered by the
      specified length of the address structure.  (Null bytes in the name have no
      special significance.)  The name has no connection with file system
      pathnames.  When the address of an abstract socket is returned by
      getsockname(2), getpeername(2), and accept(2), the returned addrlen is
      greater than sizeof(sa_family_t) (i.e., greater than 2), and the name of
      the socket is contained in the first (addrlen - sizeof(sa_family_t)) bytes
      of sun_path.  The abstract socket namespace is a nonportable Linux
      extension.

Bu belirtilmemiş olsa da, soyut soket adları bind () vb. De kullanıldığı gibi, boş bayt yerine ilk karakterle @ basılır.

Man sayfasında da belirtildiği gibi, @ veya null bayttan sonraki dize bir dosya sistemi yolu değildir ve herhangi bir şey olabilir. Sizin durumunuzda, örgütsel nedenlerle (diğer soyut soketlerle çatışmaları önlemek için) bir yol olarak yapılandırılmıştır.


Tesadüfen hayır, '@', '^ A' kelimesini SOH, kontrol karakteri bir ile aynı çeviri yaptığınızda NULL bayt'ı temsil eden karakterdir.
Daniel Pittman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.