No meu sistema de arquivos Linux, um link simbólico aponta para 127.0.1.1:+xxxxx
.
Por que o sinal de mais? Também poderia haver um sinal de menos? Por que não apenas 127.0.1.1:xxxxx
?
No meu sistema de arquivos Linux, um link simbólico aponta para 127.0.1.1:+xxxxx
.
Por que o sinal de mais? Também poderia haver um sinal de menos? Por que não apenas 127.0.1.1:xxxxx
?
Respostas:
Links simbólicos que não apontam para um arquivo não têm significado genérico. Nesse caso, pode ser o ID do processo ou uma porta com algum protocolo especial falado sobre ele ou outro identificador. Tudo depende de qual programa foi criado.
O software que cria esses links simplesmente tira proveito dos fatos de que 1) o alvo de um link simbólico pode ser inexistente ou até um total absurdo; 2) criar um link simbólico é uma operação completamente atômica de syscall única (como está lendo seu destino), ao contrário de criar um arquivo regular que requer pelo menos três chamadas de sistema separadas.
Assim, a criação de links simbólicos pode ser abusada como uma maneira de bloquear (garantindo uma instância única de um programa), mesmo quando outros mecanismos possam não ser confiáveis. O programa não precisa do link simbólico para realmente resolver um arquivo real: ele se preocupa apenas com a criação do link ou se ele falha porque já existe.
fopen
, fwrite
e fclose
?
open
(ou talvez creat
em software antigo) write
, e close
não as versões f * fornecidas pelo stdio. Mas, sim, você precisa fazer pelo menos open
e write
criar o arquivo e colocar algo significativo nele. Agora, se você quiser que algum código "tente criá-lo, se for bem-sucedido, coloque algumas informações nele, senão leia algumas informações dele", o segundo processo pode apenas tentar read
antes que o primeiro processo possa write
. symlink
evita isso; tenha sucesso e crie o link ou falhe e verifique se readlink
possui as informações para você.
Tanto quanto sei, o "+" significa que o número após o IP (o "xxxxx") se refere a um "ID do processo" (não uma porta que geralmente usa a notação [endereço IP]: [número da porta]).
É possível que essa "notação" (não tenho certeza se a chamaria de "notação", pois não conheço nenhuma documentação "oficial") se refere a outra coisa se usada por um aplicativo específico - mas, novamente, essa é sempre a possibilidade não apenas com links simbólicos. Os únicos casos que conheço (e pude encontrar com uma pesquisa que não era muito extensa) o "+ XXXX" sempre se referiam ao ID do processo.
/proc
ou /dev
. Você pode explicar para que serve esse link simbólico?