che cosa significa "Lettura testata non riuscita: successo"?


9

Sto cercando di installare Arch Linux (dall'istantanea 2014-04-01). Ho creato un file di scambio e provato swapon, ma ho ricevuto un messaggio di errore (?) Che non capisco.

L'ho giustiziato

fallocate -l 512M /mnt/sda2/swapfile
chmod 600 /mnt/sda2/swapfile
swapon /mnt/sda2/swapfile

e l'output è

swapon: /mnt/sda2/swapfile: read swap header failed: Success

e ho :(alla fine della mia riga di comando. Quindi è riuscito o fallito? Non è come impostare un file di scambio?

Risposte:


18

Non è come impostare un file di scambio?

Penso che ti sia perso un passaggio tra chmode swapon:

mkswap /mnt/sda2/swapfile

Per quanto riguarda l'errore ossimoromico ...

swapon: / mnt / sda2 / swapfile: lettura intestazione swap non riuscita: riuscita

Ciò significa letteralmente che c'è un bug nel swaponcodice, ma non necessariamente quello relativo al suo funzionamento principale.

Le funzioni della libreria C fanno spesso uso di errno , una variabile globale che memorizza un codice di errore. La stessa funzione restituirà un valore che indica che si è verificato un errore (qualsiasi errore) e la natura esatta di tale errore verrà memorizzata in errno. L'idea è che se si ottiene un'indicazione di un errore, è quindi possibile controllare il valore di errnoper vedere esattamente di cosa si tratta.

C'è anche una strerror()funzione di libreria che prenderà un valore errno (sono numeri interi) e restituirà una stringa di linguaggio umano relativa ad esso. Uno di questi è Success, che corrisponde a un codice di errore pari a 0 (ovvero, nessun errore).

Quindi quando vedi qualcosa del genere, indica un errore come:

  • Ottenere un errore, quindi chiamare un'altra funzione (correttamente) che reimposta errno su 0 dietro le quinte, quindi utilizzare errno per determinare i dettagli dell'errore che si è verificato prima di chiamare la seconda funzione.

E / o

  • Passare strerror()una variabile che avrebbe dovuto essere stato assegnato il valore di errno ad un certo punto (per evitare che si verificasse l'errore precedente) ma non lo era.

Se potessi otterrai due voti: il mkswape errno.
Aaron D. Marasco,
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.