Posix Open Function in C

Posix Open Function in C
Sebbene ci siano molte librerie in C, la libreria Posix è molto nota tra gli sviluppatori a causa della sua vasta gamma di funzioni di chiamata di sistema, in particolare la funzione di sistema richiede "file". La libreria POSIX per il sistema operativo Linux offre una varietà di funzioni. Esiste una funzione aperta () che viene appositamente utilizzata per aprire un file specifico da un sistema in una di quelle chiamate Posix. Utilizza molte opzioni per creare, aprire, leggere, scrivere e fare molte cose sui file Linux.

Esempio 1:
Diamo un'occhiata al primo esempio per utilizzare la funzione Open () di Posix per creare e aprire semplicemente i file in modalità di sola lettura. Per questo, usa la query touch nella shell per creare un file C. Può essere salvato nella cartella di lavoro corrente.

Apri il tuo file appena generato, io.e. aprire.C, nell'editor per aggiungere un po 'di snippet di codice al suo interno proprio come nell'immagine presentata. Avvia il tuo codice con l'uso di intestazioni standard C come STDIO.h, fcntl.H e Errno.h che sono appositamente inclusi per l'input/output standard, l'uso del deposito e visualizzare gli errori, rispettivamente. C'è una funzione principale () per eseguire l'esecuzione. Creiamo una variabile intera "F" che viene utilizzata come descrittore di file per ottenere il valore restituito dalla funzione di funzione "Open ()". La funzione Open () utilizza il nome del file di testo insieme a due opzioni: l'opzione "O_rdonly" per leggere il file già esistente e l'opzione "o_creat" per creare un file se non esiste.

L'istruzione printf () visualizza il valore restituito usando il descrittore "F". Il valore di "F" è uguale a "-1". Lancia un errore che non siamo riusciti ad aprire o creare un file insieme a un messaggio di errore tramite la funzione Perror (). Altrimenti, l'istruzione printf () visualizza il messaggio di successo sul nostro schermo. Il codice è completato utilizzando l'istruzione return 0.

#includere
#includere
#includere
int main ()
int f = open ("Nuovo.txt ", o_rdonly | o_creat);
printf ("Valore descrittore di file = %d \ n", f);
if (f == -1)
Perror ("Impossibile creare/aprire un file ... \ n);
altro
printf ("file creato correttamente!\N");
restituzione 0;

Dopo che il codice è stato salvato correttamente, lo compiliamo con lo strumento "GCC" della riga di comando come il compilatore C disponibile nel sistema Linux. Scrivi la parola chiave "GCC" con il nome di un file "Apri.c "e eseguilo. La compilazione è prospera e proviamo il "./UN.fuori ”query per eseguire il codice compilato. L'output mostra il valore di "F" insieme a un messaggio di successo che indica che abbiamo finalmente creato correttamente un nuovo file di testo. L'output di istruzioni "LS" mostra il rosso evidenziato "nuovo.file txt "creato dall'opzione" o_creat "della funzione Open () nella cartella di lavoro corrente.

Utilizziamo lo stesso codice per ottenere un errore se la funzione Open () non si trova a leggere un file che non esiste nel sistema. Utilizzando la stessa struttura del codice, aggiorniamo la prima riga di codice della funzione principale (). Qui, rimuoviamo l'opzione "O_Creat" per creare un nuovo file utilizzando la chiamata di funzione Open () e utilizziamo solo l'opzione "O_rdonly".

Inoltre, cambiamo il nome di un file in "Test.txt "che non esiste nella nostra cartella di lavoro. Ciò significa che la funzione Open () non è in grado di aprire il file e la funzione Perror () visualizza il rispettivo messaggio di errore sulla console. Salviamo questo file C aggiornato.

#includere
#includere
#includere
int main ()
int f = aperto ("test.txt ", o_rdonly);
printf ("Valore descrittore di file = %d \ n", f);
if (f == -1)
Perror ("Errore: [Impossibile aprire un file] :);
altro
printf ("file aperto correttamente!\N");
restituzione 0;

L'esecuzione del file dopo l'esecuzione lancia l'errore "nessun file o directory".

Esempio 2:
È possibile utilizzare la chiamata di funzione Open () per leggere un dati di stringa da un file specifico utilizzando gli array. Per questo, hai solo bisogno di "unistd.H "e" fcntl.H "biblioteche. L'esecuzione del codice inizia dal suo metodo principale "main ()" che dichiara un array di tipo di carattere "A" della dimensione 30. Il descrittore di file interi utilizza il valore restituito dalla chiamata funzione aperta (). La funzione Open () che viene utilizzata qui emette la sua opzione "o_rdonly" per aprirla in modalità di sola lettura. La funzione read () alla riga successiva viene utilizzata per archiviare un totale di 12 caratteri dal "file.txt "usando il suo descrittore" F "e salvalo nell'array di caratteri" A ".

Se la funzione read () ha esito positivo a leggere i dati da un file, restituisce un certo valore alla variabile "N". La chiamata di funzione Write () utilizza la variabile "N" per scrivere i dati sulla console appena salvata nell'array "A".

#includere
#includere
int main ()
Char A [30];
int f = open ("file.txt ", o_rdonly);
int n = read (f, a, 12);
scrivere (1, a, n);

Ora, dobbiamo creare lo stesso nome File di testo ".txt "nella stessa cartella e aggiungi alcuni dati di testo come presentato usando l'istruzione" Cat "di Linux. Compiliamo ed eseguiamo il nostro "aperto.File C "e ottieni i primi 12 caratteri dal" file.txt "sono visualizzati sulla shell.

Esempio 3:
È possibile utilizzare la chiamata di funzione Open () per copiare i dati di testo da un file a un altro con una leggera modifica del codice. Eliminiamo lo stesso frammento di codice di esempio e apportiamo alcune modifiche ad alcune delle sue righe. La dimensione del buffer dei caratteri “A” viene aggiornata a 50 e il descrittore F1 apre il file “File.txt "in modalità" sola lettura "usando la funzione" o_rdonly "in una funzione aperta (). La funzione Read () utilizza il descrittore "F1" per leggere 25 caratteri dal "file.file txt "e salvali su un array buffer" a ". Il valore di successo/fallimento restituito viene salvato in variabile "N".

Un altro descrittore di file "F2" viene utilizzato qui per creare un nuovo file chiamato "Source.txt "all'interno della stessa cartella usando l'opzione" 0_creat "in un metodo" aperto "e con una modalità" solo scrittura "(O_WRONLY) con il valore 0642 da scrivere. La chiamata di funzione Write () utilizza il valore "N" per ottenere i dati dal buffer dei caratteri "A" e analizzali al secondo file "Source.txt "usando il suo descrittore" f2 ". Ora, eseguiamo il seguente codice per vedere cosa otteniamo nell'output:

#includere
#includere
int main ()
Char A [50];
int f1 = open ("file.txt ", o_rdonly);
int n = leggi (f1, a, 25);
int f2 = aperto ("fonte.txt ", o_creat | o_wronly, 0642)
Scrivi (F2, A, N);

Ora abbiamo un "file.txt "e" aperto.File C "nella cartella corrente. Puoi vedere i dati all'interno del "file.TXT". All'aperto.C ”Esecuzione del file, l'origine.il file txt viene generato e i 25 caratteri dal "file.Il file txt ”viene copiato nella“ sorgente.File txt "anche.

Conclusione

Questa guida è semplice ma piena di esempi C per utilizzare e imparare la chiamata di funzione Posix "Open ()". Usando tutti gli esempi dati, non fallirai mai durante l'utilizzo dei file in C.