Quando si crea un socket unix, il nome del percorso (man 7 unix
) può contenere al massimo 108 caratteri. Per un amico questo ha causato un bug nel suo programma perché il suo percorso era più lungo. Ora ci chiediamo come è stato determinato esattamente quel numero.Perché la lunghezza massima del percorso è consentita per i socket unix su linux 108?
ho il sospetto che il numero è stato determinato in modo che sizeof
di quel struct sockaddr_un
è inequivocabile rispetto al sizeof di altri sockaddresses come sockaddr_in
. Ma se volevano evitare scontri con altri valori sizeof, perché non usare un numero primo, per esempio? Qualcuno può fornire una fonte autorevole per questo?
Perché un numero primo dovrebbe evitare la dimensione di altri tipi? –
@EdHeal Forse mi sbaglio, ma sommare i multipli di 2 (causati dagli allineamenti) non renderà più una struttura che corrisponde alla sua dimensione. In alternativa avrei potuto chiedere, perché usare un numero pari se l'obiettivo sarebbe quello di evitare gli scontri? Il che sembra indicare che il mio sospetto riguardo al numero potrebbe essere errato. –
Sono ammesse molte strutture multiple a due (probabilmente la metà di esse). Ma fare qualcosa delle dimensioni di un numero primo non evita gli scontri. Ad ogni modo, che senso ha farlo se il programmatore sta ottenendo questa parte fondamentale sbagliata e usando la struttura sbagliata. –