Funzione getcwd nella lingua C

Funzione getcwd nella lingua C

Impostazione di una directory di lavoro a partire dalla directory di root Linux apre la possibilità di accedere e lavorare con l'intera struttura del file nelle varie cartelle di sistema e utente.

La lingua C fornisce la funzione Chdir () per impostare una directory di lavoro e ha anche una funzione per interrogare la directory in cui si sta lavorando.

In questo articolo di Linux, imparerai come utilizzare la funzione getcwd () per interrogare la directory in cui stai attualmente lavorando. Spiegheremo i meccanismi teorici di questa funzione, la sua sintassi, i tipi di argomenti di input e output e ogni tipo di dati.

Per utilizzare questa funzione in modo pratico, applicheremo tutto ciò che abbiamo imparato attraverso un esempio pratico in cui impari passo per passo su come utilizzare questa funzione per recuperare la directory di lavoro corrente.

Sintassi della funzione getCwd () in lingua C

char *getcwd (char *buf, size_t size);

Descrizione della funzione getcwd () in lingua C

La funzione getCwd () interroga l'attuale directory di lavoro del programma o processo di chiamata. Questa funzione restituisce il puntatore a un array di caratteri "buf di dimensioni" che contiene una stringa con il percorso assoluto della directory di lavoro corrente.

Se la chiamata alla funzione getcwd () ha esito positivo, restituisce il puntatore alla stringa con il percorso della directory di lavoro. Se si verifica un errore, il risultato è un puntatore nullo. In questo caso, il codice di identificazione dell'errore viene automaticamente archiviato nella variabile Errno Global.

Sia la Dichiarazione della variabile ERRNO sia le definizioni dei codici di errore sono nel "Errno.H ”intestazione. Nel seguente esempio, vedremo una sezione speciale che spiega come rilevare e identificare gli errori.

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

#includere

Come interrogare l'attuale directory di lavoro con la funzione getcwd () nella lingua C

In questo esempio, spiegheremo come recuperare la directory di lavoro corrente e visualizzarla nella console di comando.

Il primo passo per farlo è includere le intestazioni necessarie. In questo caso, sono i "unistd.H "e" stdio.file h ". Quindi, apriamo una funzione principale () che restituisce un valore di restituzione vuoto e in cui dichiariamo un percorso di array con 128 elementi di tipo char. In questo array, la funzione getCwd () memorizza la stringa con la directory.

Una volta dichiarate le variabili necessarie, chiamiamo la funzione getcwd (). Passiamo l'argomento input "BUF" come puntatore al percorso dell'array e le dimensioni del buffer come dimensione dell'argomento, come 128 in questo caso.

Quindi, utilizzando la funzione printf (), stampiamo il messaggio "La directory effettiva è:" seguito dal percorso della directory che viene restituito dalla funzione getcwd (). Ecco il codice completo per questo esempio:

#includere
#includere
void main ()

Char Path [128];
getcwd (percorso, 128);
printf ("\ n \ n la directory effettiva è: %s \ n", percorso);

Successivamente, vediamo un'immagine con la compilazione e l'esecuzione di questo codice. In questo caso, getCwd () restituisce il percorso assoluto della home directory dell'utente in sessione:

Lo stesso puntatore che getCwd () ritorna nell'argomento "BUF" restituisce il seguente risultato:

puntatore a buff = getcwd (puntatore a buff, dimensioni);

Ciò consente alla funzione getcwd () di essere chiamato dagli argomenti di input di un'altra funzione. Il seguente codice mostra la chiamata dagli argomenti di input di printf ():

#includere
#includere
void main ()

Char Path [128];
printf ("\ n \ n la directory effettiva è: %s \ n", getcwd (percorso, 128));

In questo caso, printf () porta il puntatore alla stringa che viene restituita da getcwd () e lo stampa alla console di comando con una sola riga di codice.

La seguente immagine mostra che questo metodo ha lo stesso effetto del programma nell'esempio precedente:

Errori quando si utilizza la funzione getcwd (): come rilevarli e identificarli

Se si verifica un errore quando si chiama la funzione getCwd (), restituisce un puntatore nullo di conseguenza. Il modo più semplice per rilevare un errore è utilizzare una condizione "if" in cui la condizione di input è determinata da un risultato uguale a null. Di seguito è riportato uno snippet di codice che utilizza questo metodo per il rilevamento degli errori:

if (getcwd (percorso, 128) == null)

printf ("Un errore si è verificato nella funzione funzione getcwd ().\N" );

Quando si verifica un errore, un codice numerico che lo identifica viene automaticamente archiviato nella variabile Global Errno che viene dichiarata in "Errno.H ”intestazione.

Questa intestazione definisce anche i codici di errore e la loro rappresentazione numerica.

Puoi vedere gli errori che la funzione getCwd () può generare, la loro rappresentazione numerica che viene restituita nella variabile Errno e una breve descrizione di ciascuno:

Definizione Valore in errno Descrizione
Enoent 2 Nessun file o directory con questo nome.
Eacces 13 Permesso negato
Efault 14 Indirizzo cattivo.
Einval 22 Argomento non valido.
Enametoolong 36 Nome file o percorso troppo lungo.

Il modo più semplice per identificare un errore è aprire un interruttore condizionale in cui la condizione di salto è la variabile globale Errno e ogni caso è una definizione di errore. Vediamo il codice per questo metodo di rilevamento nel seguente:

if (getcwd (percorso, 128) == null)

switch (errno)
case einval:
printf ("argomento non valido.\N" );
rottura;
case efault:
printf ("Bad Address.\N" );
rottura;
caso enoent:
printf ("Nessun file o directory di questo tipo.\N" );
rottura;

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

#includere

Conclusione

In questo articolo di Linux suggerisce, abbiamo spiegato come utilizzare la funzione getcwd () per determinare l'attuale directory di lavoro del programma di chiamata.

Abbiamo esaminato una sezione teorica su questa funzione, quali sono i suoi argomenti di input e output e che tipo di dati utilizza. Quindi, abbiamo applicato ciò che abbiamo appreso attraverso gli esempi pratici con immagini e frammenti di codice che mostrano come dichiarare le variabili necessarie e chiamare la funzione getcwd ().

Abbiamo anche incluso una sezione speciale in cui elenchiamo i diversi errori che questa funzione può generare e spiegare come rilevarli.