Funzione aperta in lingua C

Funzione aperta in lingua C

La conoscenza delle funzioni aperte, lette e di scrittura è essenziale perché ne abbiamo sempre bisogno per archiviare o smaltire le informazioni che vengono archiviate nei file. La lingua C ha due funzioni di base che è possibile utilizzare per aprire i file, utilizzando le funzioni Open () e Fopen (), ognuna con metodi di chiamata diversi.

In questo articolo di Linux, imparerai come utilizzare la funzione Open (). Spiegheremo tutto su questa funzione, la sua sintassi, la chiamata del metodo, gli argomenti di input e output, il tipo di dati che accetta in ciascun caso e come dichiararli correttamente.

Quindi, applicheremo ciò che abbiamo appreso implementando l'uso di questa funzione in esempi pratici che abbiamo preparato per te con frammenti di codice e immagini che mostrano l'uso della funzione Open () nella lingua C.

Affinché tu abbia una conoscenza completa, aggiungiamo una sezione speciale che descriva tutti gli errori che possono verificarsi quando si utilizza questa funzione, nonché il loro rilevamento e identificazione, in modo che nel caso in cui si verifichino, si hanno le tecniche necessarie per un soluzione rapida.

Sintassi della funzione Open () in lingua C

int Open (const char *pathname, flags int);

Descrizione della funzione Open () in lingua C

La funzione Open () apre un file per la lettura o la scrittura. Questa funzione apre il file specificato nell'argomento di input del percorso. Questo input deve specificare il percorso assoluto o relativo e il nome del file in formato stringa o un puntatore ad esso.

L'argomento di input Flags specifica gli attributi che il file deve avere. Di seguito è riportato un elenco delle flag che questo argomento di input accetta e una breve descrizione dell'attributo che ognuno imposta:

Bandiera Descrizione
O_rdonly Apri il file solo per la lettura.
O_wronly Apri il file solo per la scrittura.
O_rdwr Apri il file per la lettura e la scrittura.
O_creat Crea un file nel percorso e nel nome specificato in Pathname discussione.
O_ APPEND Apre il file e posiziona il cursore alla fine del contenuto.
O_async Abilita il controllo di ingresso e uscita per segnale.
O_CLOEXEC Abilita la modalità Close-on-Exec sul file aperto.
O_nonblock Disabilita il blocco del file aperto.
O_TMPFILE Crea un file temporaneo senza nome sul percorso specificato.

Nei casi in cui viene utilizzata più di una flag, è necessario eseguire un'operazione logica "o". Questo può essere fatto all'interno dei flag degli argomenti di input nella stessa riga di codice della funzione di funzione.

Gli attributi e le modalità possono essere modificati o consultati una volta aperto il file con la funzione fcntl ().

La funzione Open () restituisce un numero intero che contiene il descrittore del file aperto. Questo descrittore viene utilizzato come argomento di input per funzioni di elaborazione dei file come read (), write (), ecc., Per fare riferimento al file.

Questa funzione è definita in "UNISTD.H ”intestazione. I flag che definiscono gli attributi e la modalità per aprire il file sono definiti in “FCNTL.H". Per utilizzare la funzione Open (), è necessario includere queste intestazioni nel codice come segue:

#includere
#includere

Come aprire un file utilizzando la funzione Open () in lingua C

In questo esempio, useremo la funzione Open () per aprire un file in modalità di lettura e scrittura. In questo caso, è un file precedentemente creato chiamato "esempio.TXT" che è conservato in "Documenti".

Passo 1: Il primo passo è includere le intestazioni richieste e dichiarare che esce vuoto e ritorna nella funzione principale ().

Passo 2: Il prossimo passo è dichiarare le variabili che fungono da argomenti di input e output alla funzione Open (). Come argomento di output, dichiariamo l'intero "FD" che è il descrittore di file. Come argomento di input, dichiariamo l'array di caratteri buffer che contiene la stringa con il percorso e il nome del file da aprire.

Dichiariamo anche una serie di 512 caratteri chiamati "testo" in cui archiviamo il testo che vogliamo scrivere al file che, in questo caso, è il primo paragrafo di questo articolo.

Passaggio 3: Una volta dichiarate le variabili, chiamiamo la funzione aperta () e passiamo l'intero "FD" come argomento di output, il percorso della stringa come primo argomento di input e il flag O_wronly come secondo argomento.

Passaggio 4: Quando Open () ritorna dalla chiamata, restituisce il descrittore del file che viene aperto in "FD". Quindi, scriviamo con la funzione Write (), passando il descrittore "FD" come primo argomento di input, il testo della stringa come secondo argomento di input e infine le dimensioni del testo ottenuto con la funzione strlen (). Dopo l'operazione di scrittura, chiudiamo il file con la funzione chiusura ().

Ecco il codice completo per questo esempio:

//Passo 1
#includere
#includere
#includere
#includere
#includere
void main ()

//Passo 2
intfd;
char buffer [] = "documenti/esempio.TXT";
char text [512] = "La conoscenza delle varie funzioni aperte, lette e scritte è essenziale perché ne avremo sempre bisogno per archiviare o smaltire le informazioni archiviate nei file.
La lingua C ha due funzioni di base che è possibile utilizzare per aprire file, open () e fopen (), ciascuno con diversi metodi di chiamata.";
// Passaggio 3
fd = open (buffer, o_wronly);
// Passaggio 4
scrivere (fd, & text, strlen (testo));
chiudere (FD);

La figura seguente mostra la compilazione e l'esecuzione di questo codice insieme al file che abbiamo appena scritto. Come possiamo vedere, la funzione Open () apre correttamente il file. Quindi utilizziamo la funzione write () per scrivere il contenuto del testo. In questo caso, contiene il primo paragrafo di questo articolo:


Errori che possono verificarsi quando si utilizza la funzione Open (): come rilevarli e identificarli

L'uso della funzione Open () può portare a vari errori. In questo caso, restituisce un risultato uguale a -1.

Il modo più semplice per determinare se si è verificato un errore è utilizzare una condizione "if" in cui la condizione è il valore -1 che viene restituito in "FD". Ora, esaminiamo come utilizzare questo metodo per determinare se si è verificato un errore:

fd = open ("percorso/nome file", flags);
if (fd ==-1)
printf ("si è verificato un errore durante il tentativo di aprire il file.");

Se la funzione Open () restituisce con un errore, va all'istruzione "if" e stampa il messaggio, “Si è verificato un errore durante il tentativo di aprire il file".

Quando Open () restituisce un risultato uguale a -1, memorizza automaticamente un codice numerico nella variabile Errno Global che è definita in "Errno.H ”intestazione. Questo codice numerico può essere utilizzato per identificare l'errore che si è verificato.

Quanto segue è un estratto degli errori che la funzione Open () può generare, insieme a una breve descrizione di ciascun errore e del valore intero associato:

Definizione Valore in errno Errore
Eperm 1 operazione non permessa
Enoent 2 Nessun file o directory con questo nome
Eintr 4 Chiamata di sistema interrotta
Enxio 6 Nessun dispositivo o indirizzo del genere
Enomem 12 Fuori dalla memoria
Eacces 13 Permesso negato
Efault 14 Indirizzo cattivo
EBUSY 16 Dispositivo o risorsa occupata
Eexist 17 il file esiste
Enodev 19 Nessun apparecchio di questo tipo
Enotdir 20 Non una directory
Eisdir 21 È una directory
Einval 22 Argomento non valido
Efile 23 Overflow della tabella di file
Emfile 24 Troppi file aperti
EtxtBsy 26 File di testo occupato
Enospc 28 Nessun spazio rimasto sul dispositivo
Erofs 30 File system di sola lettura
Enametoolong 36 Nome file troppo lungo
Eloop 40 Troppi collegamenti simbolici incontrati
Eoverflow 75 Valore troppo grande per il tipo di dati definito
Edquot 122 Quota superata

Il modo più semplice per identificare un errore è aprire uno switch in cui la variabile Errno è la condizione di salto e ogni caso è una definizione di errore.

Successivamente, considera un esempio in cui apriamo un file che non esiste, risultando in un errore. Per rilevare un errore, utilizziamo la condizione "if" che abbiamo visto nello snippet precedente. Per identificarlo, apriamo un interruttore con i tre errori più comuni che questa funzione può produrre:

#includere
#includere
#includere
#includere
void main ()

intfd;
Char Buffer [1024];
fd = open ("documenti/no esiste.txt ", o_append | o_rdwr);
if (fd ==-1)
switch (errno)
case eperm:
printf ("operazione non consentita. Errore: %i \ n ", errno);
rottura;
caso enoent:
printf ("Nessun file/directory di questo tipo. Errore:%i \ n ", errno);
rottura;
Caso Enotdir:
printf ("non una directory. Errore: %i \ n ", errno);
rottura;


La seguente immagine mostra la compilazione e l'esecuzione di questo codice. In esso, vediamo come viene rilevato l'errore generato nella condizione "if" e come gli errori sono identificati nell'interruttore condizionale per visualizzare il messaggio e il valore specifico:

Conclusione

In questo articolo di Linux, abbiamo spiegato come utilizzare la funzione Open () per aprire i file.

Ti abbiamo mostrato la sintassi di questa funzione e la descrizione teorica di come funziona, il metodo della chiamata, gli argomenti di input e il tipo di dati utilizzati in ciascun caso.

Abbiamo quindi implementato l'uso della funzione Open () in un esempio pratico usando frammenti di codice e immagini. Ti abbiamo mostrato come dichiarare le variabili richieste, chiamare questa funzione per aprire un file e scrivere ad esso.

Abbiamo anche incluso una sezione in cui elenchiamo tutti gli errori che questa funzione può generare. Ti abbiamo mostrato le tecniche per rilevarle e classificarle in modo da avere i mezzi necessari per ripararli rapidamente quando si verificano.