In un link simbolico che punta a "127.0.1.1:+xxxxx", a cosa serve il carattere più?


52

Sul mio filesystem Linux, un link simbolico punta a 127.0.1.1:+xxxxx.

Perché il segno più? Potrebbe esserci anche un aspetto negativo? Perché non solo 127.0.1.1:xxxxx?


Questo link simbolico è in / proc?
Giosuè,

4
@Joshua: Più probabilmente sotto ~ / .mozilla / o simili. Firefox / Thunderbird e iirc Steam utilizzano tali collegamenti simbolici per il blocco.
Grawity

2
Xxxxx è un numero o i caratteri xxxxx?
Mawg,

2
Probabilmente non correlato ma solo per informazione. In alcuni client IRC il segno più prima della porta era lì per indicare che il server remoto utilizza SSL / TLS.
eKKiM,

Risposte:


93

I collegamenti simbolici che non puntano a un file non hanno alcun significato generico. In questo caso potrebbe essere l'ID del processo o una porta con un protocollo speciale su cui è stato parlato o un altro identificatore. Tutto dipende da quale programma è stato creato.

Il software che crea questi collegamenti sfrutta semplicemente i fatti che 1) il target di un collegamento simbolico può essere inesistente o addirittura totale assurdità; 2) la creazione di un collegamento simbolico è un'operazione completamente atomica a scala singola (come sta leggendo il suo obiettivo), a differenza della creazione di un file normale che richiede almeno 3 chiamate di sistema separate.

Pertanto la creazione del collegamento simbolico può essere abusata come un modo per bloccare (garantendo una singola istanza di un programma) anche quando altri meccanismi potrebbero essere inaffidabili. Il programma non ha bisogno del link simbolico per risolversi effettivamente in un file reale: si preoccupa solo se la creazione del collegamento ha esito positivo o se non riesce a causa del fatto che esiste già.


5
"* a differenza della creazione di un file normale che richiede almeno 3 chiamate di sistema separate. *" - Potresti chiarire? Vuoi dire fopen, fwritee fclose?
Nic Hartley,

11
@NicHartley: le chiamate di sistema sono open(o forse creatnel vecchio software) writee closenon le versioni f * fornite da stdio. Ma sì, devi fare almeno opene writecreare il file e inserirvi qualcosa di significativo. Ora, se si desidera che un codice "provi a crearlo, in caso di successo, inserire alcune informazioni in esso, altrimenti leggere alcune informazioni da esso", il secondo processo potrebbe semplicemente provarne readprima che il primo processo abbia una possibilità write. symlinkevita quello; o riesci e crea il link, oppure fallisci e assicurati di readlinkavere le informazioni per te.
Guntram Blohm supporta Monica il

"... può essere abusato come un modo ..." Questo abuso come in "è usato in un modo in cui non era destinato a essere usato" o "usato in un modo in cui non dovrebbe essere usato"?
The Guy with The Hat,

22

Per quanto ne so, "+" significa che il numero dopo l'IP ("xxxxx") si riferisce a un "ID processo" (non una porta che di solito utilizza la notazione [indirizzo IP]: [numero di porta]).

È possibile che questa "notazione" (non sono sicuro che la chiamerei una "notazione" poiché non conosco alcuna documentazione "ufficiale") fa riferimento a qualcos'altro se utilizzata da un'applicazione specifica - ma, di nuovo, è sempre la possibilità non solo con collegamenti simbolici. Gli unici casi che conosco (e che potrei trovare con una ricerca non troppo estesa) "+ XXXX" si riferivano sempre all'ID del processo.


1
L'ho appena controllato. Nel mio caso lo fa davvero.
myMethod,

1
Esiste la documentazione di questo formato da qualche parte che potresti collegare?
David Z,

1
Non sono sicuro, lo ricordo solo per esperienza.
Albin,

2
Sembra che tu stia parlando di un link simbolico in una directory speciale, come /proco /dev. Puoi spiegare a cosa serve questo link simbolico?
Barmar,

4
Questa è la prima volta che vedo questa notazione, quindi sono sorpreso di sentirti dire che è una notazione generale. Dove l'hai visto usato per indicare un ID processo?
Barmar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.