Unixドメインソケットへのエンドポイントを表す「ファイル」を配置する場所に規約がありますか?
私はそれらを/tmp/some-application-specific-subdir-name/
、しかしもっと一般的な場所があるのだろうか。
[〜#〜] posix [〜#〜] は、最大までのパス長が明確ではないという背景があります。 accessなどの「ファイル」:
Sun_pathのサイズは意図的に未定義のままにされています。これは、実装によってサイズが異なるためです。たとえば、4.3 BSDはサイズ108を使用し、4.4 BSDはサイズ104を使用します。ほとんどの実装はBSDバージョンに由来するため、サイズは通常92〜108の範囲です。
アプリケーションは、Sun_pathに特定の長さを想定したり、{_ POSIX_PATH_MAX}バイト(256)を保持できると想定したりしないでください。
したがって、パスの長さに関するこの「制限」は、アプリケーションのファイル/パス名の構成から除外する必要があります。
[〜#〜] fhs [〜#〜] はこう言います: /run
(それは従来 - /var/run
。)
Ubuntuでは、netstat
コマンドは複数の異なる場所にあるUNIXドメインソケットを表示します。いくつかの、ただしいくつかの/var/run
、JBが示唆したとおり。それらのほとんどは@/tmp/…
(私は@
は、Linux固有の抽象的な名前と、さまざまなアプリケーションの特定の場所にある他の名前を指定します。したがって、実際には、最も一般的な場所は/tmp
、少なくともUbuntuではかなり一般的なプラットフォームです。 /tmp
の場所はここで特に意味があります。UDSは各bind
によって作成され、後で削除される必要があるためです(ソケットが閉じられたとき、またはアプリケーションが終了したとき、またはアプリケーションが次回起動したとき、およびbind
への次の呼び出しの前に)。