パス名でソケットの詳細をお探しですか?

パス名でソケットの詳細をお探しですか?

私は失敗straceし、次の結果を得るクライアントアプリケーションを実行しています。

socket(PF_LOCAL, SOCK_SEQPACKET|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
setsockopt(3, SOL_SOCKET, SO_PASSCRED, [1], 4) = 0
connect(3, {sa_family=AF_LOCAL, sun_path="/path/to/socket"}, 19) = -1 EPROTOTYPE (Protocol wrong type for socket)
close(3)                                = 0
exit_group(2)                           = ?
+++ exited with 2 +++

それから私は努力します推測するさまざまなパラメータを使用してソケットをシミュレートしましたが、socat効果はありませんでした。

私もこの答えのコードを見ました。ここところで、既存のソケットを使用する代わりにソケットを作成するようで、パスからソケットをインポートする方法が見つからないようです。

ソースコードを掘らずにソケットパス(存在する場合)で既存のソケットの詳細(プロトコルタイプなど)を簡単に確認する方法はありますか?

ベストアンサー1

あなたはそれを使用することができますlsof /path/to/socket

COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
hindsight 19619 root    6u  unix 0xffff88038612b480      0t0 257123917 /path/to/socket

PIDプロセス自体に関する詳細情報は、以下で確認できます。

cat /proc/19619/io 
rchar: 11635200437
wchar: 2722080850
syscr: 16905056
syscw: 920240
read_bytes: 36397568
write_bytes: 3515994112
cancelled_write_bytes: 760422400

ssまたは、すべてのUnixソケットを表示するために使用できます。

ss -x
  • -xUnixドメインソケットの表示
  • -e詳細ソケット情報の表示
  • -mソケットメモリ使用量の表示

特定のタイプをフィルタリングできます。

ss -x -A unix_stream

おすすめ記事