Como saber se algum processo está vinculado a um soquete de domínio Uni

stou escrevendo um servidor de soquete de domínio Unix para Linu

Uma peculiaridade dos soquetes de domínio Unix que descobri rapidamente é que, ao criar um soquete Unix que escuta, cria a entrada do sistema de arquivos correspondente, fechar o soquete não o remove. Além disso, até que a entrada do sistema de arquivos seja removida manualmente, não é possívelbind() um soquete para o mesmo caminho novamente:bind() falha comEADDRINUSE se o caminho indicado já existir no sistema de arquivo

Como conseqüência, a entrada do sistema de arquivos do soquete precisa serunlink() 'ed no desligamento do servidor para evitar queEADDRINUSE na reinicialização do servidor. No entanto, isso nem sempre pode ser feito (ou seja, falha do servidor). Na maioria das perguntas frequentes, posts em fóruns, sites de perguntas e respostas, encontrei apenas conselhos, como solução alternativa, paraunlink() o soquete antes de chamarbind(). Nesse caso, porém, torna-se desejável saber se um processo está vinculado a esse soquete antes deunlink() '

De fato,unlink() 'Um soquete Unix enquanto um processo ainda está vinculado a ele e, em seguida, recriar o soquete de escuta não gera nenhum erro. Como resultado, no entanto, o processo antigo do servidor ainda está em execução, mas é inacessível: o soquete de escuta antigo é "mascarado" pelo novo. Esse comportamento deve ser evitado.

Ideally, usando soquetes de domínio Unix, a API de soquete deve ter exposto o mesmo comportamento de "exclusão mútua" exposto ao vincular soquetes TCP ou UDP: " Quero ligar o soquete S ao endereço A; se um processo já estiver vinculado a esse endereço, apenas reclame!" Infelizmente, esse não é o caso..

Existe uma maneira de impor esse comportamento de "exclusão mútua"? Ou, dado o caminho do sistema de arquivos, existe uma maneira de saber,através d API do soquete, se algum processo no sistema possui um soquete de domínio Unix vinculado a esse caminho? Devo usar uma primitiva de sincronização externa à API do soquete flock(), ...)? Ou eu estou esquecendo de alguma coisa

brigado por suas sugestõe

ota: os soquetes Unix de namespace abstrato do Linux parecem resolver esse problema, pois não há entrada no sistema de arquivos paraunlink(). No entanto, o servidor que estou escrevendo pretende ser genérico: ele deve ser robusto nos dois tipos de soquetes de domínio Unix, pois não sou responsável por escolher os endereços de escut

questionAnswers(2)

yourAnswerToTheQuestion