Como encontrar o outro ponto de um soquete de domínio Unix no Mac OS X para escrevê-lo / lê-lo?

1

Eu listei o arquivo aberto para um processo (um daemon) na minha caixa que executa o 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

Gostaria de encontrar uma maneira de abrir esse soquete e escrever nele. (essa é a minha obsessão desta vez ..)

Como encontrar o i-node / name do arquivo subjacente para alcançar esse socket? Existe uma maneira de abordar programaticamente este endereço 0x34f888 de um script de shell? Se não for assim, como fazer programaticamente?

Como comentário, lancei o comando netstat e obtive este resultado:

> 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
...

Eu não sou um guru de rede / socket. Espero que isso possa dar mais informações

PS: para ser honesto, eu postei essa pergunta no StackOverflow primeiro (desculpe, eu não acho que o ServerFault está à primeira vista por enquanto), mas ninguém parece dar resposta. : / mesma pergunta no SO

    
por yves Baumes 14.05.2009 / 14:12

2 respostas

2

É possível que um socket AF_UNIX seja não associado a um nome de arquivo, seja "unnamed", (ou também "abstract", neste caso tem um nome, mas não tem nada a ver com o sistema de arquivos) pelo menos no Linux . É improvável que o OS X seja diferente. Para detalhes, veja a página de manual para o bind de função de socket (ou procure nos docs de desenvolvimento).

De qualquer forma, se o OS X tiver o equivalente do sistema de arquivos / proc, você poderá obter um identificador no soquete, passando pela lista de descritores de arquivo do processo de destino. YMMV. Opa, não tem procfs. Veja este sobre soluções alternativas específicas do Mac.

    
por 07.06.2009 / 05:07
0

Os soquetes de domínio Unix possuem inodes e, portanto, podem ser vinculados. Você normalmente espera que eles se manifestem como um arquivo especial em algum lugar no sistema de arquivos.

    
por 14.05.2009 / 14:17