Funzione CHDR nella lingua C

Funzione CHDR nella lingua C
Impostazione di una directory di lavoro a partire dalla directory di root Linux apre la possibilità di accedere e lavorare sull'intera struttura del file nelle varie cartelle di sistema e utente.

In questo Suggerimento Linux Articolo, imparerai come impostare una directory di lavoro utilizzando il chdir () funzione.

Spiegheremo i meccanismi teorici di questa funzione, la sua sintassi, i tipi di argomenti di input e output e il tipo di dati che ciascuno di questi argomenti prende. Quindi, esamineremo una descrizione su come il chdir () funziona e le intestazioni necessarie per utilizzare questa funzione.

Per utilizzare questa funzione in pratica, applicheremo tutto ciò che abbiamo appreso in un esempio pratico in cui impari il processo passo-passo su come utilizzare questa funzione per impostare una directory di lavoro.

Sintassi della funzione chdir () in lingua C

int chdir (const char* percorso)

Descrizione della funzione Chdir () in lingua C

La funzione chdir () imposta la directory di lavoro nella cartella specificata nel percorso assoluto che viene passato nella stringa dell'argomento di input. Questa funzione accetta una stringa pura o un puntatore di tipo char in una stringa che contiene il percorso della directory selezionata. Per portare la directory corrente al livello superiore, dobbiamo inviare la stringa "..." come argomento di input a chdir (). Per interrogare il percorso, utilizzare la funzione getcwd ().

L'argomento di output di questa funzione è di tipo int. Se la selezione della directory di lavoro ha esito positivo, chdir () restituisce 0 come risultato. Altrimenti, se si verifica un errore, il risultato è -1.

Quando lavoriamo con questa funzione, lo facciamo direttamente sulla struttura dei file del sistema operativo. Questa struttura può variare in diverse versioni del sistema operativo e può indicare directory che non esistono o hanno un nome diverso. Pertanto, l'uso di questa funzione può attivare i diversi tipi di errori.

La funzione chdir () restituisce -1 se si verifica un errore durante l'esecuzione. Tuttavia, queste informazioni non sono sufficienti per identificare l'errore e fornire una soluzione in tempo reale o un messaggio all'utente, informando sull'eccezione. Tuttavia, tutti i possibili errori che questa funzione possono lanciare sono predefiniti nel "Errno.H ”intestazione. Vedremo più tardi una sezione speciale per identificare gli errori predefiniti.

La funzione chdir () è definita in "unistd.H ”intestazione. Per usarlo, dobbiamo includerlo nel nostro ".File C "come segue:

#includere

Come impostare la directory di lavoro usando la funzione chdir () in lingua c

In questo esempio, spieghiamo come impostare la directory di lavoro dal nostro codice C. Il primo passo è includere l'intestazione necessaria, "unistd.H". Includiamo anche l'intestazione di input e output che è lo "stdio.h "poiché utilizziamo la funzione printf () per visualizzare i risultati. Esistono due modi per impostare la directory con questa funzione. La prima directory è una stringa semplice che inviamo come argomento di input a chdir ().

Usiamo la funzione getcwd () per recuperare la directory creata. La stringa restituita è memorizzata in Dir array di caratteri che stampiamo () sulla shell per determinare se viene modificato correttamente.

Nel seguente frammento, impostiamo la cartella "Documenti" come directory di lavoro usando questa modalità:

#includere
#includere
void main ()

Char Dir [50];
chdir ("/home/linuxhint/documenti/");
printf ("\ n \ n la directory selezionata è: %s \ n", getcwd (dir, 50));

Successivamente, vediamo un'immagine con la compilazione e l'esecuzione di questo codice:

Il secondo modo è quello di creare un buffer con gli elementi di tipo char con il percorso della directory selezionato e chiamare la funzione chdir () passando quel puntatore stringa come argomento di input.

#includere
#includere
void main ()

Char Dir [50];
Char Path [50] = "/Home/LinuxHint/Documents/";
chdir (percorso);
printf ("\ n \ n la directory selezionata è: %s \ n", getcwd (dir, 50));

Successivamente, vediamo un'immagine con la compilazione e l'esecuzione di questo codice:

Possibili problemi e soluzioni quando si utilizza la funzione chdir () nella lingua C

Uno dei problemi più comuni quando si utilizza la funzione chdir () è che questa funzione utilizza il percorso assoluto della directory che vogliamo selezionare nel suo argomento di input.

Quando lavoriamo con file e percorsi nella programmazione, di solito lo facciamo con funzioni come Fopen () o simili. I percorsi specificati come argomenti di input in queste funzioni non devono contenere la directory di root poiché prendono la "casa" dell'utente accessibile come punto di partenza.

A differenza di queste funzioni, chdir () è una funzione di sistema. Ciò significa che usa i percorsi assoluti. Se la directory home (/) Linux non è specificata come inizio del percorso, questa funzione non ha effetto. Ecco la procedura corretta per selezionare la directory "documenti" in un percorso assoluto:

Home/documenti errati
/home/documenti corretti

Il seguente codice esegue la selezione della directory "documenti" con due chiamate a chdir (). Il primo codice è senza la directory root (/) e il secondo codice è con la directory root (/). Dopo ogni chiamata, interroga la directory corrente con getcwd () e la visualizza nella console di comando.

#includere
#includere
void main ()

char name_ptr [100];
// nessuna directory di root
chdir ("home/linuxhint/documenti/");
printf ("no root directory: %s", getcwd (name_ptr, 100));
// con la directory di root
chdir ("/home/linuxhint/documenti/");
printf ("con la directory root: %s \ n", getcwd (name_ptr, 100));

È molto importante tenerne conto quando si condividono con diverse funzioni, catene o frammenti che contengono percorsi o directory di file poiché, come possiamo vedere, alcune funzioni hanno effetto quando la directory principale non è inclusa come Fopen () altri come chdir () no.

Nella seguente immagine, vediamo il codice precedente che viene compilato ed eseguito e mostra l'effetto di questa funzione con e senza la directory principale nel suo percorso di input.

Come recuperare e identificare le eccezioni che possono essere generate usando chdir () con l'aiuto delle variabili Errno e gli errori predefiniti nell'errno.HEADER H

Questa sezione spiega brevemente come identificare i possibili errori generati utilizzando la funzione chdir () attraverso i messaggi di errore predefiniti nell'errno.HEADER H.

Il "errno.H ”L'intestazione definisce i codici di errore e viene utilizzata per identificarli quando viene eseguito un programma. Una variabile di tipo intero denominato "errno" è definita in esso che memorizza un valore predefinito che rappresenta un errore specifico ogni volta che si verifica un'eccezione durante l'esecuzione. Di seguito, puoi vedere un frammento originale del "errno-base.Intestazione H "che è incluso in" Errno.h "e in cui sono definiti gli errori più comuni:

#define eperm 1 / * operazione non consentita * /
#define noent 2 / * Nessun file o directory * /
#define esrch 3 / * no tale processo * /
#define eintr 4 / * chiamata di sistema interrotta * /
#define EIO 5/ * Ir Errore */
#define enxio 6 / * Nessun dispositivo o indirizzo * /
#define e2big 7 / * elenco di argomenti troppo lungo * /
#Define ENOEXEC 8 / * ERRORE FORMATO DI ESET * /
#define EBADF 9 / * Numero file cattivo * /
#define echild 10 / * Nessun bambino processi * /
#define Eagin 11 / * riprova * /
#define enomem 12 / * fuori dalla memoria * /
#define eacces 13 / * autorizzazione negata * /
#define efault 14 / * Bad Indirizzo * /
#define EnotBlk 15 / * Blocco dispositivo richiesto * /
#define eBusy 16 / * dispositivo o risorsa occupato * /
#define eexist 17 / * esiste * /
#define exdev 18 / * link cross-device * /
#define enodev 19 / * Nessun dispositivo del genere * /
#define Enotdir 20 / * non una directory * /
#define Eisdir 21 / * è una directory * /
#define einval 22 / * argomento non valido * /
#define enfile 23 / * tabella file overflow * /
#define emfile 24 / * troppi file aperti * /
#define Enotty 25 / * non una macchina da scrivere * /
#define EtxtBsy 26 / * File di testo occupato * /
#define efbig 27 / * File troppo grande * /
#define enospc 28 / * Nessun spazio rimasto sul dispositivo * /
#Define Spipe 29 / * Illegale Seek * /
#define erofs 30 / * file system di sola lettura * /
#define emlink 31 / * troppi link * /
#define epipe 32 / * tubo rotto * /
#define edom 33 / * argomento matematico fuori dal dominio di func * /
#Define Erange 34 / * Risultato matematico non rappresentabile * /

Nei casi in cui la funzione chdir () restituisce -1, possiamo identificare l'errore usando la variabile "errno". In questo modo, diamo un trattamento specifico per risolvere l'errore o un messaggio all'utente.

Le variabili e i codici di errore sono definiti in "Errno.H ”intestazione. Per usarli, dobbiamo includerli nel nostro ".File C "come segue:

#includere

Esempio:

In questo esempio, proveremo a impostare la directory di lavoro in una cartella inesistente. Quindi, chdir () restituisce -1. Poiché sappiamo che la funzione genera un errore, consultiamo la variabile "errno" in una condizione if per identificare l'errore. In questo caso, è il Noent Errore che indica che il file o la directory non viene trovato ed è rappresentato dal numero 2.

Usiamo la funzione printf () per inviare un messaggio all'utente, informandoli che si è verificato un errore, il numero di errore e il suo significato. Quello che segue è il codice per questo esempio:

#includere
#includere
#includere
void main ()

Errore int;
errore = chdir ("/home/linuxhint/docnds/");
if (errore == -1)
printf ("\ n \ nan si è verificato. Errore: %i \ n ", errno);
if (errrno == enoent)
printf ("Nessun file o directory \ n \ n");

Puoi provare i diversi frutti che indicano le cartelle esistenti e inesistenti per vedere i risultati. La seguente immagine mostra la compilazione e l'esecuzione di questo codice:

Conclusione

In questo completo Suggerimento Linux Articolo, abbiamo spiegato come utilizzare la funzione chdir () per specificare una directory di lavoro. Abbiamo esaminato una sezione teorica su questa funzione e applicato ciò che abbiamo appreso in un esempio con i frammenti di codice immagine. Ti abbiamo anche mostrato alcuni degli errori più comuni quando si utilizza il chdir () e come specificare correttamente il percorso di lavoro. Inoltre, abbiamo incluso una sezione speciale che ti insegna come rilevare i vari errori con la variabile "errno".

Speriamo che questo articolo sia utile per te. Per ulteriori articoli sulla lingua C e sui suggerimenti Linux, utilizzare il motore di ricerca sul nostro sito Web.