web-dev-qa-db-ja.com

Unixドメイン(AF_UNIX)ソケットのエンドポイント(ファイル)はどこに配置しますか?

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)を保持できると想定したりしないでください。

したがって、パスの長さに関するこの「制限」は、アプリケーションのファイル/パス名の構成から除外する必要があります。

35
alk

[〜#〜] fhs [〜#〜] はこう言います: /run

(それは従来 - /var/run 。)

41
JB.

Ubuntuでは、netstatコマンドは複数の異なる場所にあるUNIXドメインソケットを表示します。いくつかの、ただしいくつかの/var/run、JBが示唆したとおり。それらのほとんどは@/tmp/…(私は@は、Linux固有の抽象的な名前と、さまざまなアプリケーションの特定の場所にある他の名前を指定します。したがって、実際には、最も一般的な場所は/tmp、少なくともUbuntuではかなり一般的なプラットフォームです。 /tmpの場所はここで特に意味があります。UDSは各bindによって作成され、後で削除される必要があるためです(ソケットが閉じられたとき、またはアプリケーションが終了したとき、またはアプリケーションが次回起動したとき、およびbindへの次の呼び出しの前に)。

7
Hibou57