Die Kenntnisse der Funktionen offen, lesen und schreiben sind unerlässlich, da wir sie immer benötigen, um die Informationen zu speichern oder zu entsorgen, die in Dateien gespeichert sind. Die C -Sprache verfügt über zwei grundlegende Funktionen, mit denen Sie die Dateien mithilfe der Funktionen Open () und fopen () mit jeweils unterschiedlichen Aufrufmethoden öffnen können.
In diesem Linux -Hinweis -Artikel lernen Sie, wie Sie die Funktion open () verwenden. Wir werden alles über diese Funktion, ihre Syntax, den Methodenaufruf, die Eingabe- und Ausgabeargumente, die Art der Daten, die sie in jedem Fall akzeptieren.
Anschließend werden wir das anwenden, was wir gelernt haben, indem wir die Verwendung dieser Funktion in praktischen Beispielen implementieren, die wir für Sie mit Code -Snippets und Bildern vorbereitet haben, die die Verwendung der Open () -Funktion in der C -Sprache zeigen.
Damit Sie ein umfassendes Wissen haben können, fügen wir einen speziellen Abschnitt hinzu, der alle Fehler beschreibt, die bei der Verwendung dieser Funktion auftreten können, sowie deren Erkennung und Identifizierung, sodass Sie die erforderlichen Techniken für a Schnelle Lösung.
Syntax der Open () -Funktion in C -Sprache
int offen (const char *pathname, int flags);Beschreibung der Open () -Funktion in C -Sprache
Die Funktion open () öffnet eine Datei zum Lesen oder Schreiben. Diese Funktion öffnet die Datei, die im PathName -Eingabeargument angegeben ist. Diese Eingabe muss den absoluten oder relativen Pfad und den Namen der Datei im String -Format oder einen Zeiger darauf angeben.
Das Flags -Eingabeargument gibt die Attribute an, die die Datei haben muss. Das Folgende ist eine Liste der Flags, die dieses Eingabeargument akzeptiert, und eine kurze Beschreibung des Attributs, das jedes einzeln festlegt:
Flagge | Beschreibung |
O_rdonly | Öffnen Sie die Datei nur zum Lesen. |
O_wronly | Öffnen Sie die Datei nur zum Schreiben. |
O_RDWR | Öffnen Sie die Datei zum Lesen und Schreiben. |
O_creat | Erstellt eine Datei im Pfad und in dem in angegebenen Namen in Pfadname Streit. |
O_ anhängen | Öffnet die Datei und platziert den Cursor am Ende des Inhalts. |
O_async | Aktivieren Sie die Eingangs- und Ausgangskontrolle durch Signal. |
O_cloexec | Aktivieren. |
O_nonblock | Deaktiviert die Blockierung der geöffneten Datei. |
O_tmpfile | Erstellen Sie eine unbenannte temporäre Datei am angegebenen Pfad. |
In Fällen, in denen mehr als ein Flag verwendet wird, muss eine logische „oder“ Operation zwischen ihnen durchgeführt werden. Dies kann innerhalb der Eingabeargumentationsflags in derselben Codezeile wie der Funktionsaufruf erfolgen.
Die Attribute und Modi können geändert oder konsultiert werden, sobald die Datei mit der Funktion fcntl () geöffnet ist.
Die Funktion open () gibt eine Ganzzahl zurück, die den Deskriptor der geöffneten Datei enthält. Dieser Deskriptor wird als Eingabeargument für Dateiverarbeitungsfunktionen wie Read (), Write () usw. verwendet., Um sich auf die Datei zu beziehen.
Diese Funktion ist in der „Unistd.H ”Kopfball. Die Flags, die die Attribute und den Modus zum Öffnen der Datei definieren, sind in „FCNTL.H". Um die Funktion open () zu verwenden, müssen Sie diese Header wie folgt in Ihren Code aufnehmen:
#enthaltenSo öffnen Sie eine Datei mithilfe der Funktion open () in der C -Sprache
In diesem Beispiel werden wir die Funktion open () verwenden, um eine Datei im Lese- und Schreibmodus zu öffnen. In diesem Fall handelt es sich um eine zuvor erstellte Datei namens namens "Beispiel.txt" welches in gespeichert ist "Unterlagen".
Schritt 1: Der erste Schritt besteht darin.
Schritt 2: Der nächste Schritt besteht. Als Ausgabeargument deklarieren wir die Ganzzahl „FD“, die der Dateideskriptor ist. Als Eingabeargument deklarieren wir das Puffer -Zeichen -Array, das die Zeichenfolge mit dem Pfad und dem Namen der zu öffnenden Datei enthält.
Wir deklarieren auch eine Reihe von 512 Zeichen, die als „Text“ bezeichnet werden, in dem wir den Text speichern, den wir in die Datei schreiben möchten, die in diesem Fall der erste Absatz dieses Artikels ist.
Schritt 3: Sobald die Variablen deklariert sind, nennen wir die Funktion open () und bestehen die Ganzzahl „FD“ als Ausgabemargument, den String -Pfad als erstes Eingabebereich und das O_Wronly -Flag als zweites Argument.
Schritt 4: Wenn Open () aus dem Anruf zurückkehrt, gibt es den Deskriptor der Datei zurück, der in "FD" geöffnet ist. Dann schreiben wir mit der Funktion write () und übergeben den Deskriptor „FD“ als erstes Eingabemargument, den String -Text als zweites Eingabebereich und schließlich die Größe des Textes, der mit der Funktion strlen () erhalten wird. Nach dem Schreibvorgang schließen wir die Datei mit der Funktion close ().
Hier ist der vollständige Code für dieses Beispiel:
//Schritt 1Die folgende Abbildung zeigt die Kompilierung und Ausführung dieses Code zusammen mit der Datei, die wir gerade geschrieben haben. Wie wir sehen können, öffnet die Funktion open () die Datei korrekt. Wir verwenden dann die Funktion write (), um den Inhalt des Textes zu schreiben. In diesem Fall enthält es den ersten Absatz dieses Artikels:
Fehler, die bei der Verwendung der Funktion open () auftreten können: So erkennt und identifizieren Sie sie
Die Verwendung der Funktion open () kann zu verschiedenen Fehlern führen. Wenn dies der Fall ist, gibt es ein Ergebnis zurück, das gleich -1 entspricht.
Der einfachste Weg, um festzustellen, ob ein Fehler aufgetreten ist, besteht darin, eine „wenn“ -Sbund zu verwenden, bei der der Zustand der Wert -1 -Wert ist, der in „FD“ zurückgegeben wird. Lassen Sie uns nun sehen, wie Sie diese Methode verwenden können, um festzustellen, ob ein Fehler aufgetreten ist:
fd = open ("Pfad/Dateiname", Flags);Wenn die Funktion open () mit einem Fehler zurückgibt, geht sie an die Anweisung „If“ und druckt die Nachricht aus, „Beim Versuch, die Datei zu öffnen, ist ein Fehler aufgetreten“.
Wenn Open () ein Ergebnis zurückgibt, das gleich -1 entspricht.H ”Kopfball. Dieser numerische Code kann verwendet werden, um den aufgetretenen Fehler zu identifizieren.
Das Folgende ist ein Auszug der Fehler, die die Funktion open () erzeugen kann, zusammen mit einer kurzen Beschreibung jedes Fehlers und des zugehörigen Ganzzahlwerts:
Definition | Wert in errno | Fehler |
Eperm | 1 | Operation unzulässig |
Enoent | 2 | Keine solche Datei oder Verzeichnis |
Eintr | 4 | Unterbrochener Systemaufruf |
Enxio | 6 | Kein solches Gerät oder eine solche Adresse |
Enomem | 12 | Aus dem Gedächtnis |
Leacces | 13 | Zugriff verweigert |
Efault | 14 | Schlechte Adresse |
EBusy | 16 | Gerät oder Ressource beschäftigt |
Existieren | 17 | Datei existiert |
Enodev | 19 | Kein solches Gerät |
Enotdir | 20 | Kein Verzeichnis |
Eisdir | 21 | Ist ein Verzeichnis |
Einval | 22 | Ungültiges Argument |
E-DATEI | 23 | Dateitabellenüberlauf |
Emfile | 24 | Zu viele offene Dateien |
Etxtbsy | 26 | Textdatei beschäftigt |
Enospc | 28 | Kein Speicherplatz auf Gerät |
Erofs | 30 | Nur-Lese-Dateisystem |
Enametoolong | 36 | Dateiname zu lang |
Eloop | 40 | Zu viele symbolische Links begegnen |
Eoverflow | 75 | Wert zu groß für den definierten Datentyp |
Edquot | 122 | Quote überschritten |
Der einfachste Weg, um einen Fehler zu identifizieren, besteht darin.
Betrachten Sie als nächstes ein Beispiel, in dem wir eine Datei öffnen, die nicht existiert, was zu einem Fehler führt. Um einen Fehler zu erkennen, verwenden wir die „if“ -Sbemessung, die wir im vorherigen Snippet gesehen haben. Um dies zu identifizieren, öffnen wir einen Schalter mit den drei häufigsten Fehlern, die diese Funktion erzeugen kann:
#enthaltenDas folgende Bild zeigt die Kompilierung und Ausführung dieses Code. Darin sehen wir, wie der generierte Fehler in der Bedingung „If“ erkannt wird und wie die Fehler im Switch bedingt identifiziert werden, um die Nachricht und den spezifischen Wert anzuzeigen:
Abschluss
In diesem Linux -Hinweis -Artikel haben wir erläutert, wie die Funktion open () zum Öffnen der Dateien verwendet wird.
Wir haben Ihnen die Syntax dieser Funktion und die theoretische Beschreibung des Funktionierens, die Aufrufmethode, die Eingabebereich und den Datentyp, der jeweils verwendet wird, gezeigt.
Anschließend haben wir die Verwendung der Funktion open () in einem praktischen Beispiel mit Code -Snippets und Bildern implementiert. Wir haben Ihnen gezeigt, wie Sie die erforderlichen Variablen deklarieren, diese Funktion aufrufen, um eine Datei zu öffnen und darauf zu schreiben.
Wir haben auch einen Abschnitt hinzugefügt, in dem wir alle Fehler auflisten, die diese Funktion generieren kann. Wir haben Ihnen die Techniken gezeigt, um sie zu erkennen und zu klassifizieren, damit Sie die notwendigen Mittel haben, um sie schnell zu beheben, wenn sie auftreten.