Networking
如何在 Mac OS X 上找到 Unix 域套接字的另一點來寫入/讀取它?
我在執行 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 特定解決方法的資訊。