En un enlace simbólico que apunta a '127.0.1.1:+xxxxx', ¿para qué sirve el carácter más?

52

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?

myMethod
fuente
¿Es este enlace simbólico bajo / proc?
Joshua
44
@Joshua: más probable en ~ / .mozilla / o similar. Firefox / Thunderbird e iirc Steam usan dichos enlaces simbólicos para bloquear.
Grawity
2
¿Es xxxxx un número o los caracteres xxxxx?
Mawg
2
Probablemente sin relación pero solo para información. En algunos clientes IRC, el signo más antes del puerto estaba allí para indicar que el servidor remoto usa SSL / TLS.
eKKiM

Respuestas:

93

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.

Gravedad
fuente
55
"* a diferencia de crear un archivo normal que tome al menos 3 llamadas al sistema por separado. *" - ¿Podría aclararlo? Qué quiere decir fopen, fwritey fclose?
Nic Hartley
11
@NicHartley: Las llamadas al sistema son open(o tal vez createn software antiguo) write, y closeno las versiones f * que proporciona stdio. Pero sí, debe hacer al menos openy writecrear 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 readantes de que el primer proceso tenga la oportunidad write. symlinkevita eso; ya sea exitoso y cree el enlace, o falle y asegúrese de readlinktener la información para usted.
Guntram Blohm apoya a Monica el
"... puede ser abusado como una forma ..." ¿Es este abuso como en "usado de una manera que no fue destinado a ser usado" o "usado de una manera que no debería ser usado"?
El chico con el sombrero
22

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.

Albin
fuente
1
Lo acabo de comprobar. En mi caso realmente lo hace.
myMethod
1
¿Existe documentación de este formato en algún lugar al que pueda vincular?
David Z
1
No estoy seguro, solo lo recuerdo por experiencia práctica.
Albin
2
Parece que estás hablando de un enlace simbólico en un directorio especial, como /proco /dev. ¿Puedes explicar para qué se usa este enlace simbólico?
Barmar
44
Esta es la primera vez que veo esta notación en absoluto, así que me sorprende oírle decir que es una notación general. ¿Dónde has visto que solía significar una ID de proceso?
Barmar