私は失敗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
-x
Unixドメインソケットの表示-e
詳細ソケット情報の表示-m
ソケットメモリ使用量の表示
特定のタイプをフィルタリングできます。
ss -x -A unix_stream