Networking

如何在 Mac OS X 上找到 Unix 域套接字的另一點來寫入/讀取它?

  • July 19, 2009

我在執行 Mac OS X 10.5 的機器上列出了一個程序(守護程序)的打開文件:

>lsof  -p 89
COMMAND PID     USER   FD   TYPE    DEVICE  SIZE/OFF     NODE NAME
...
xxxxx   89 xxxxxxxx    9u  unix 0x34f8990       0t0          ->0x34f8880

我想找到一種方法來打開這個套接字並在其中寫入。(這是我這次的痴迷..)

如何找到底層文件的 i-node/name 以到達該套接字?有沒有辦法從shell腳本以程式方式解決這個地址0x34f888?如果不是這樣,如何以程式方式進行?

作為評論,我已經啟動了 netstat 命令並得到了這個結果:

> netstat -u
Active LOCAL (UNIX) domain sockets
Address  Type   Recv-Q Send-Q    Inode     Conn     Refs  Nextref Addr
...
34f8990 stream      0      0        0  34f8880        0        0
...
34f8880 stream      0      0        0  34f8990        0        0
...

我不是網路/套接字專家。希望這可以提供更多資訊

PS:老實說,我首先在 StackOverflow 上發布了這個問題(對不起,我暫時不認為 ServerFault 是第一眼),但似乎沒有人給出答案。:/ 關於SO的相同問題

至少在 Linux 中,AF_UNIX 套接字可能未綁定到文件名、“未命名”(或“抽象”,在這種情況下,它有名稱但與文件系統無關)。OS X 不太可能有所不同。有關詳細資訊,請參閱套接字函式綁定的手冊頁(或查看開發文件)。

無論如何,如果 OS X 具有 /proc 文件系統的等價物,您可以通過查看目標程序的文件描述符列表來獲得套接字的句柄。YMMV。糟糕,它沒有 procfs。請參閱有關Mac 特定解決方法的資訊。

引用自:https://serverfault.com/questions/8153