En mi sistema de archivos Linux, un enlace simbólico apunta a 127.0.1.1:+xxxxx
.
¿Por qué el signo más? ¿Podría haber también un menos? ¿Por qué no solo 127.0.1.1:xxxxx
?
En mi sistema de archivos Linux, un enlace simbólico apunta a 127.0.1.1:+xxxxx
.
¿Por qué el signo más? ¿Podría haber también un menos? ¿Por qué no solo 127.0.1.1:xxxxx
?
Respuestas:
Los enlaces simbólicos que no apuntan a un archivo no tienen ningún significado genérico. En este caso, podría ser la ID del proceso, o un puerto con algún protocolo especial hablado sobre él, u otro identificador. Todo depende de qué programa lo hizo.
El software que crea estos enlaces simplemente aprovecha los hechos de que 1) el objetivo de un enlace simbólico puede ser inexistente o incluso una tontería total; 2) la creación de un enlace simbólico es una operación completamente atómica de una sola llamada al sistema (como está leyendo su objetivo), a diferencia de la creación de un archivo regular que toma al menos 3 llamadas al sistema separadas.
Por lo tanto, se puede abusar de la creación de enlaces simbólicos como una forma de bloqueo (asegurando una sola instancia de un programa) incluso cuando otros mecanismos pueden no ser confiables. El programa no necesita el enlace simbólico para realmente resolver un archivo real: solo le importa si la creación del enlace tiene éxito o si falla debido a que ya existe.
fopen
, fwrite
y fclose
?
open
(o tal vez creat
en software antiguo) write
, y close
no las versiones f * que proporciona stdio. Pero sí, debe hacer al menos open
y write
crear el archivo y poner algo significativo en él. Ahora, si desea que algún código "intente crearlo, si tiene éxito, agregue información, de lo contrario, lea algo de información", el segundo proceso podría intentarlo read
antes de que el primer proceso tenga la oportunidad write
. symlink
evita eso; ya sea exitoso y cree el enlace, o falle y asegúrese de readlink
tener la información para usted.
Hasta donde sé, el "+" significa que el número después de la IP (el "xxxxx") se refiere a una "ID de proceso" (no un puerto que generalmente usa la notación [dirección IP]: [número de puerto]).
Es posible que esta "notación" (no estoy seguro de llamarla "notación ya que no conozco ninguna documentación" oficial ") se refiere a otra cosa si es utilizada por una aplicación específica, pero de nuevo, esa es siempre la posibilidad no solo con enlaces simbólicos. Los únicos casos que conozco (y pude encontrar con una búsqueda que no fue demasiado extensa) el "+ XXXX" siempre se referían a la ID del proceso.
/proc
o /dev
. ¿Puedes explicar para qué se usa este enlace simbólico?