Errno in c

Errno in c
La lingua C non consente direttamente la gestione degli errori ma consente l'accesso a un livello inferiore tramite valori di restituzione. In caso di inesattezza, la maggior parte delle chiamate di funzione C o forse anche Linux producono -1 o void e impostano il codice di errore ERRNO. È una costante universale che mostra quando una chiamata di funzione non è riuscita. Nel file di intestazione, troverai un elenco di diversi codici di errore. Di conseguenza, uno sviluppatore C può esaminare i valori forniti e, in base a loro, prendere le misure necessarie. Sembrano non esserci problemi nel programma se il risultato è 0. All'interno di questo articolo oggi discuteremo dell'uso della variabile "errno" per ottenere codici di errore e messaggi sul nostro ambiente Linux (i.e., Ubuntu 20.0.4 Sistema.) Iniziamo con l'apertura di un guscio terminale in Ubuntu 20.04 Sistema operativo Linux e installazione del compilatore GCC di C.

Prima di passare alla creazione di un codice C, abbiamo bisogno di un file C nel nostro sistema Linux. Pertanto, abbiamo usato le istruzioni touch per crearne una. Questo file deve contenere un'estensione "c" alla sua fine. Come puoi scoprirlo, abbiamo creato un file chiamato "Errno.C". Il comando Elenco è stato utilizzato per elencare tutti i file e le cartelle della nostra attuale directory di lavoro in Linux. Il file C appena realizzato “ERRNO.c ”è anche elencato qui. Per creare il codice C nel file, dobbiamo aprirlo in alcuni editor come un editor di testo, l'editor VIM o l'editor GNU Nano. Quindi, l'abbiamo aperto all'interno dell'editor GNU Nano con l'uso del comando "nano" nella shell. Questo file verrà aperto in un editor simile al terminale.

Esempio 01

Cominciamo con l'esempio iniziale di questo articolo. Diciamo, si desidera aprire e leggere i dati da un file di testo specifico che risiede nella stessa directory corrente utilizzando il deposito in codice C. Per questo, dobbiamo utilizzare la libreria di output di input standard di una C nel nostro codice. Quindi, l'abbiamo incluso nella riga di apertura che impiega la parola chiave "#include".

Dopodiché, dobbiamo usare "errno.HE ”” in questo codice C in modo da poter utilizzare la variabile incorporata “ERRNO” per ottenere il codice di errore e il messaggio. L'esecuzione principale sarà avviata dalla funzione "principale ()" del programma C. All'interno di questo programma principale, abbiamo utilizzato la variabile "File" per inizializzare il descrittore dei file "F" del tipo di punta. Questo descrittore di file è stato utilizzato per aprire il file "nuovo.txt "in un formato di sola lettura usando la funzione" fopen "del deposito in c. L'istruzione IF-ELSE è qui per verificare se il file viene aperto correttamente o meno. La parte "if" dell'istruzione verificherà se il risultato restituito del descrittore di file è uguale a 0 o no. Se 0, allora significa che il file è mancante o non aperto correttamente. Pertanto, l'istruzione printf utilizzerà la variabile "errno" per visualizzare il codice di errore.

D'altra parte, la parte "else" verrà utilizzata quando la condizione non soddisfa il valore del descrittore di file diverso da. L'istruzione printf mostrerà che l'apertura ha esito positivo.

Abbiamo compilato questo codice con il compilatore "GCC" e quindi eseguito con "./UN.istruzioni fuori ". Questa esecuzione del codice restituisce il codice di errore numero 2 in cui non è stato trovato alcun file.

Per rimuovere questo errore, dobbiamo creare un nuovo file di testo con l'istruzione "tocca" e aggiungere alcuni dati ad esso con l'istruzione "eco" come mostrato. L'istruzione "Cat" mostra che il file contiene i dati di testo appena aggiunti in esso.

Ora, quando compili ed esegui lo stesso codice nella shell, eseguirà la parte "else" e visualizzerà il messaggio "riuscito" (i.e., Il file è stato trovato ora.)

Se si desidera visualizzare il messaggio di errore insieme al suo codice di errore, è necessario utilizzare la funzione "Strerror" nel programma. Per questo, devi usare la "stringa.h ”anche nel codice. Quindi, abbiamo aggiunto l'intestazione e aggiornato il componente "if" dell'istruzione "if-else". La chiamata di funzione Strerror () ha fatto causa al "Errno" per ottenere il messaggio di errore con il suo codice di errore.

Quando manca il file, verrai visualizzato con il messaggio di errore "Nessun file o directory" nella shell come mostrato.

Esempio 02

Controlliamo il numero di errore per un altro esempio di errore. Abbiamo utilizzato le librerie standard nel programma e la funzione principale () contiene l'inizializzazione di una chiamata variabile "Val" e la funzione di funzione per "controllare" la funzione passando la variabile "Val". La funzione check () utilizzerebbe l'istruzione "if-else" per verificare se il valore "val" è zero o no e quindi l'altro valore può essere divisibile da essa o no. Poiché il valore "val" è 7, può essere divisibile di 8. Quindi la parte "else" della funzione check () verrebbe eseguita per calcolare il risultato della divisione e visualizzarlo sulla shell.

Dopo la compilazione e l'esecuzione, abbiamo scoperto che la divisione è possibile. La parte altro ha calcolato e visualizzato il valore di divisione tra 89 e valore "7" per variabile "val".

Aggiorniamo di nuovo il codice e aggiungiamo 0 come valore alla variabile "val" nella funzione principale () per invertire i risultati. Quindi, abbiamo aggiornato il valore "Val" a 0 come indicato nell'immagine seguente. Il restante il codice rimase intatto.

Dopo aver eseguito questo codice aggiornato, abbiamo il codice di errore 0 e il suo messaggio di errore.

Conclusione

Si tratta dell'uso della variabile "errno" nell'articolo per ottenere i codici di errore di diverse eccezioni usando il suo "errno.H ”intestazione. Inoltre, abbiamo discusso dell'uso della funzione "Strerror" per visualizzare il messaggio di errore insieme al numero di codice. Abbiamo incorporato due istanze in questa guida per spiegare meglio l'idea di Errno.