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
?
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
?
Risposte:
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à.
fopen
, fwrite
e fclose
?
open
(o forse creat
nel vecchio software) write
e close
non le versioni f * fornite da stdio. Ma sì, devi fare almeno open
e write
creare 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 read
prima che il primo processo abbia una possibilità write
. symlink
evita quello; o riesci e crea il link, oppure fallisci e assicurati di readlink
avere le informazioni per te.
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.
/proc
o /dev
. Puoi spiegare a cosa serve questo link simbolico?