CHDR -Funktion in der C -Sprache

CHDR -Funktion in der C -Sprache
Das Einrichten eines Arbeitsverzeichnisses, das aus dem Linux -Root -Verzeichnis beginnt.

In diesem Linux -Hinweis Artikel, Sie werden lernen, wie Sie ein Arbeitsverzeichnis einrichten, das mit der chdir () Funktion.

Wir werden die theoretischen Funktionen dieser Funktion, ihre Syntax, die Arten von Eingabe- und Ausgabeargumenten und die Art der Daten, die jedes dieser Argumente benötigt, erklären. Dann werden wir uns eine Beschreibung darüber ansehen, wie die chdir () funktioniert und die Header, die erforderlich sind, um diese Funktion zu verwenden.

Um diese Funktion in der Praxis zu verwenden, werden wir alles anwenden, was wir in einem praktischen Beispiel gelernt haben, in dem Sie den Schritt-für-Schritt-Prozess zur Verwendung dieser Funktion zum Festlegen eines Arbeitsverzeichnisses lernen.

Syntax der CHDIR () -Funktion in der C -Sprache

int chdir (const char* path)

Beschreibung der chdir () -Funktion in der C -Sprache

Die Funktion chdir () legt das Arbeitsverzeichnis auf den angegebenen Ordner im absoluten Pfad fest, der in der Eingabe -Argument -Zeichenfolge übergeben wird. Diese Funktion akzeptiert eine reine Zeichenfolge oder einen Zeiger des Zeichentyps auf eine Zeichenfolge, die den Pfad des ausgewählten Verzeichnisses enthält. Um das aktuelle Verzeichnis auf die UP -Ebene zu bringen, müssen wir die Zeichenfolge „…“ als Eingabeargument an chdir () senden. Verwenden Sie zum Abfragen des Pfads die Funktion getCwd ().

Das Ausgangsargument dieser Funktion ist vom Typ in INT -Typ. Wenn die Auswahl des Arbeitsverzeichnisses erfolgreich ist, gibt Chdir () 0 als Ergebnis zurück. Andernfalls beträgt das Ergebnis -1, wenn ein Fehler auftritt.

Wenn wir mit dieser Funktion arbeiten, machen wir dies direkt in der Dateistruktur des Betriebssystems. Diese Struktur kann in verschiedenen Versionen von OS variieren und auf Verzeichnisse hinweisen, die nicht existieren oder einen anderen Namen haben. Daher kann die Verwendung dieser Funktion die verschiedenen Arten von Fehlern auslösen.

Die Funktion chdir () gibt -1 zurück, wenn während der Ausführung ein Fehler auftritt. Diese Informationen sind jedoch nicht ausreichend, um den Fehler zu identifizieren und dem Benutzer eine Echtzeitlösung oder eine Nachricht bereitzustellen, wobei die Ausnahme informiert wird. Alle möglichen Fehler, die diese Funktion werfen können.H ”Kopfball. Wir werden später einen speziellen Abschnitt sehen, um die vordefinierten Fehler zu identifizieren.

Die Funktion chdir () ist in der „Unistd.H ”Kopfball. Um es zu verwenden, müssen wir es in unsere aufnehmen “.c ”Datei wie folgt:

#enthalten

So setzen Sie das Arbeitsverzeichnis mithilfe der Funktion chdir () in der C -Sprache

In diesem Beispiel erklären wir, wie das Arbeitsverzeichnis aus unserem C -Code festgelegt wird. Der erste Schritt besteht darin, den notwendigen Kopfball, den „Unistd.H". Wir schließen auch den Eingangs- und Ausgangsheader ein, der das „stdio“ ist.H ”Da wir die Funktion printf () verwenden, um die Ergebnisse anzuzeigen. Es gibt zwei Möglichkeiten, das Verzeichnis mit dieser Funktion festzulegen. Das erste Verzeichnis ist eine einfache Zeichenfolge, die wir als Eingabeargument an chdir () senden.

Wir verwenden die Funktion getCwd (), um das erstellte Verzeichnis abzurufen. Die zurückgegebene Zeichenfolge wird in der gespeichert Dir Charakterarray, das wir in die Schale aussprechen, um festzustellen, ob es korrekt geändert wird.

Im folgenden Snippet setzen wir den Ordner "Dokumente" als Arbeitsverzeichnis mit diesem Modus:

#enthalten
#enthalten
void main ()

Char Dir [50];
chdir ("/home/linuxhint/dokumente/");
printf ("\ n \ n Das ausgewählte Verzeichnis ist: %s \ n", getCwd (Dir, 50));

Als nächstes sehen wir ein Bild mit der Zusammenstellung und Ausführung dieses Code:

Der zweite Weg besteht darin, einen Puffer mit den Elementen des Zeichenentyps mit dem ausgewählten Verzeichnispfad zu erstellen und die Funktion chdir () aufzurufen, indem sie diesen String -Zeiger als Eingabemargument übergeben.

#enthalten
#enthalten
void main ()

Char Dir [50];
Zeichenpfad [50] = "/home/linuxHint/dokumente/";
Chdir (Pfad);
printf ("\ n \ n Das ausgewählte Verzeichnis ist: %s \ n", getCwd (Dir, 50));

Als nächstes sehen wir ein Bild mit der Zusammenstellung und Ausführung dieses Code:

Mögliche Probleme und Lösungen bei der Verwendung der CHDIR () -Funktion in der C -Sprache

Eines der häufigsten Probleme bei der Verwendung der Funktion chDir () ist, dass diese Funktion den absoluten Pfad des Verzeichnisses verwendet, den wir in ihrem Eingabebuchargument auswählen möchten.

Wenn wir mit Dateien und Pfaden in der Programmierung arbeiten, tun wir dies normalerweise mit Funktionen wie fopen () oder ähnlich. Die Wege, die in diesen Funktionen als Eingabeargumente angegeben sind.

Im Gegensatz zu diesen Funktionen ist chdir () eine Systemfunktion. Dies bedeutet, dass es die absoluten Pfade verwendet. Wenn das Linux -Home -Verzeichnis (/) nicht als Beginn des Pfades angegeben ist, wirkt sich diese Funktion nicht aus. Hier ist die richtige Prozedur, um das Verzeichnis „Dokumente“ auf einem absoluten Pfad auszuwählen:

Home/Dokumente falsch
/Home/Dokumente korrekt

Der folgende Code führt die Auswahl des Verzeichnisses „Dokumente“ mit zwei Aufrufen an CHDIR () durch. Der erste Code ist ohne Stammverzeichnis (/) und der zweite Code ist mit dem Stammverzeichnis (/). Nach jedem Anruf wird das aktuelle Verzeichnis mit getCwd () abfragt und in der Befehlskonsole angezeigt.

#enthalten
#enthalten
void main ()

char name_ptr [100];
// kein Stammverzeichnis
Chdir ("Home/LinuxHint/Dokumente/");
printf ("No Root Directory: %s", getCwd (name_ptr, 100));
// mit Root Directory
chdir ("/home/linuxhint/dokumente/");
printf ("mit Root -Verzeichnis: %s \ n", getCwd (name_ptr, 100));

Es ist sehr wichtig, dies zu berücksichtigen, wenn Sie mit unterschiedlichen Funktionen, Ketten oder Fragmenten teilen, die die Dateipfade oder Verzeichnisse enthalten, da einige Funktionen wirksam werden, wenn das Stammverzeichnis nicht enthalten ist, wie z. B. fopen () während Andere mögen chdir () nicht.

Im folgenden Bild sehen wir den vorherigen Code, der kompiliert und ausgeführt wird, und zeigt den Effekt dieser Funktion mit und ohne das Stammverzeichnis in seinem Eingabepfad an.

So können Sie die Ausnahmen wiederherstellen und identifizieren, die mithilfe der ERRNO.H Kopfball

In diesem Abschnitt wird kurz erklärt.H Kopfball.

Das „Errno.H ”Header definiert die Fehlercodes und wird verwendet, um sie zu identifizieren, wenn ein Programm ausgeführt wird. Eine Variable des Ganzzahl -Typs mit dem Namen "Errno" wird in IT definiert, der einen vordefinierten Wert speichert. Im Folgenden sehen Sie ein ursprüngliches Fragment der „Errno-Base.H ”-Header, der im„ Errno “enthalten ist.H ”und in dem die häufigsten Fehler definiert werden:

#define eperm 1 / * Operation nicht zulässig * /
#define noent 2 / * keine solche Datei oder Verzeichnis * /
#define eSRCH 3 / * kein solcher Prozess * /
#define EINTR 4 / * Interrupted System Call * /
#define EIO 5/ * E/A -Fehler */
#define Enxio 6 / * kein solches Gerät oder eine solche Adresse * /
#define e2big 7 / * Argumentliste zu lang * / / /
#define Enoexec 8 / * EXEC -Formatfehler * /
#define eBadf 9 / * schlechte Dateinummer * /
#define echild 10 / * Keine untergeordneten Prozesse * /
#define Eagain 11 / * Versuchen Sie es erneut * /
#define Enomem 12 / * aus dem Gedächtnis * /
#define EACCES 13 / * Erlaubnis abgelehnt * /
#define efault 14 / * schlechte Adresse * /
#define enotblk 15 / * Blockvorrichtung erforderlich * /
#define eBusy 16 / * Gerät oder Ressource geschäftig * /
#define exist 17 / * Datei existiert * /
#define exdev 18 / * Cross-Device-Link * /
#define enodev 19 / * kein solches Gerät * /
#define enotdir 20 / * kein Verzeichnis * /
#define Eisdir 21 / * ist ein Verzeichnis * /
#define Einval 22 / * Ungültiges Argument * /
#define Enfile 23 / * Dateitabelle Überlauf * /
#define EMFILE 24 / * Zu viele geöffnete Dateien * /
#define enotty 25 / * keine Schreibmaschine * /
#define etxtbsy 26 / * Textdatei geschäftig * /
#define efbig 27 / * Datei zu groß * /
#define eedospc 28 / * Kein Speicherplatz auf dem Gerät * /
#define espipe 29 / * illegale Suche * /
#define EROFS 30 / * schreibgeschütztes Dateisystem * /
#define emlink 31 / * zu viele Links * /
#define epipe 32 / * zerbrochenes Rohr * /
#define edom 33 / * mathematisches Argument aus der Domäne von Func * /
#define Erange 34 / * mathematisches Ergebnis nicht dargestellt * /

In Fällen, in denen die CHDIR () -Funktion –1 zurückgibt, können wir den Fehler anhand der Variablen „Errno“ identifizieren. Auf diese Weise geben wir eine bestimmte Behandlung an, um den Fehler oder eine Nachricht an den Benutzer zu beheben.

Die Variablen und Fehlercodes sind im „Errno.H ”Kopfball. Um sie zu benutzen, müssen wir sie in unsere aufnehmen “.c ”Datei wie folgt:

#enthalten

Beispiel:

In diesem Beispiel werden wir versuchen, das Arbeitsverzeichnis auf einen nicht existierenden Ordner festzulegen. Also kehrt Chdir () -1 zurück. Da wir wissen, dass die Funktion einen Fehler generiert, konsultieren wir die Variable „Errno“ in einer IF -Bedingung, um den Fehler zu identifizieren. In diesem Fall ist es das Laut Fehler, der angibt, dass die Datei oder das Verzeichnis nicht gefunden und durch die Nummer 2 dargestellt wird.

Wir verwenden die Funktion printf (), um eine Nachricht an den Benutzer zu senden und ihn darüber zu informieren, dass ein Fehler aufgetreten ist, die Fehlernummer und seine Bedeutung. Das Folgende ist der Code für dieses Beispiel:

#enthalten
#enthalten
#enthalten
void main ()

im Terror;
error = chdir ("/home/linuxHint/docnts/");
if (error == -1)
printf ("\ n \ nan Fehler ist aufgetreten. Fehler: %i \ n ", errno);
if (errno == Enoent)
printf ("keine solche Datei oder Verzeichnis \ n \ n");

Sie können die verschiedenen Früchte ausprobieren, die die vorhandenen und nicht existierenden Ordner angeben, um die Ergebnisse anzuzeigen. Das folgende Bild zeigt die Kompilierung und Ausführung dieses Code:

Abschluss

In diesem umfassenden Linux -Hinweis Artikel, wir haben erläutert, wie die Funktion chdir () verwendet wird, um ein Arbeitsverzeichnis anzugeben. Wir haben uns einen theoretischen Abschnitt über diese Funktion angesehen und das angewendet, was wir in einem Beispiel mit Bildcode -Snippets gelernt haben. Wir haben Ihnen auch einige der häufigsten Fehler bei der Verwendung des Chdir () und der richtigen Angabe des Arbeitspfades gezeigt. Darüber hinaus haben wir einen speziellen Abschnitt beigebracht, in dem Sie die verschiedenen Fehler mit der Variablen „Errno“ erkennen können.

Wir hoffen, dass dieser Artikel für Sie nützlich ist. Weitere Artikel über die C -Sprache und Linux -Tipps finden Sie die Suchmaschine auf unserer Website.