So verwenden Sie ReadV -Systemaufruf in c

So verwenden Sie ReadV -Systemaufruf in c
Die ReadV () -System -Aufruf -Zählsegmente zum Zeitpunkt des Dokument. Vectored I/O ist ein Prozess, bei dem ein Einzelanlagenaufruf in einem Vektor von Puffer aus einem einzigartigen Datenfluss oder von einem Vektor von Puffern als alleiniger Datenfluss schreibt. Die LEADV () -Systemaufrufmethode ähnelt dem Lesen (2); Ansonsten füllt es mehrere Puffer. Der ReadV () -Systemanruf kehrt die Gesamtzahl der Bytes zurück, die beim Erfolg gelesen werden. -1 wird im Falle eines Fehlers zurückverkehrt. Dieser Artikel behandelt das Thema des Readv () -Systemaufrufs im Ubuntu 20.04 Linux -System. Stellen Sie sicher, dass Sie Sudo -Privilegien haben, um Unannehmlichkeiten zu vermeiden.

Melden Sie sich am Start von Ihrem Linux-Betriebssystem an und öffnen Sie die Befehlszeilenkonsolenklemme. Es gibt zwei Möglichkeiten, es zu öffnen. Der erste verwendet einen Abkürzungsschlüssel „Strg+Alt+T“, während Sie sich auf dem Desktop des Linux -Systems befinden, und der andere verwendet den Aktivitätsbereich. Klicken Sie auf die Aktivitätsmenüleiste, die oben links auf dem Desktop -Bildschirm hervorgehoben wurde. Die Suchleiste wird auftauchen. Tippen Sie darauf und schreiben Sie darin „Terminal“. Drücken Sie den Schlüssel „Eingabetaste“, um fortzufahren. Die Terminalschale wird dann geöffnet. Nach der Öffnung des Konsolen Terminals ist es zuerst Zeit, eine Datei mit einer TXT -Typ -Erweiterung für einfache Verwendung zu erstellen. Wir können den Anweisungen „Touch“ und den Namen einer Datei verwenden, e.G., prüfen.txt, um es zu erstellen. Drücken Sie die Schaltfläche „Eingabetaste“ und es wird eine Datei erstellt.

$ Touch Test.txt

Im Heimverzeichnis Ihres Linux -Systems finden Sie den kürzlich geformten Datei „Test“.txt". Doppelaufladung darauf, um es zu öffnen und die darin unter den präsentierten Daten darin zu treiben. Speichern Sie es, indem Sie "Strg+S" drücken oder einfach auf die Schaltfläche "Speichern" klicken. Schließen Sie es nach der Aktualisierung mit einem Kreuzzeichen auf der rechten Seite der Datei.

Wenn Sie zum Terminal zurückkehren. Die Ausgabe zeigt den Inhalt der Datei „Test an.txt".

$ CAT -Test.txt

Um jetzt an der C -Sprache zu arbeiten. Dafür müssen Sie zuerst einen Compiler installieren. Wir schlagen vor.

$ sudo APT Installieren Sie GCC

Nach der Konfiguration eines Compilers können Sie jetzt ordnungsgemäß an der C -Sprache arbeiten. Zunächst müssen wir eine neue Datei mit einer Erweiterung des C -Typs am Ende mit dem Nano -Editor erstellen. Probieren Sie daher die folgende Abfrage in der Konsole dazu aus.

$ nano test.C

Erläuterung des Codes

Nachdem der Nano -Editor geöffnet wurde, schreiben Sie den folgenden Code der C -Sprache darin, um den ReadV -Systemaufruf in unserem Linux -System zu verwenden. Zunächst haben wir die folgenden Bibliotheken im C -Code verwendet, um ordnungsgemäß und ohne Fehler zu funktionieren. Dann haben wir die Hauptfunktion wie im Snap gezeigt deklariert. Zu Beginn der Hauptfunktion müssen wir zwei Variablen definieren, "I" und "FD". Danach wurden Arrays vom Typ Drei-Charakter oder weniger als „F1“, „F2“ und „F3“ angegeben. Danach haben wir eine Strukturtypliste oder ein Array mit dem Namen "Iovec" deklariert. Jede IOVEC -Struktur definiert ein Fragment, das ein individueller disjunkter Puffer wäre. Dann haben wir eine weitere Variable der Typgröße mit dem Namen "NR" erstellt. Nach all den Deklarationen haben wir einen einfachen "Öffnen" -Systemanruf angegeben, um die Datei "Test" zu öffnen.Txt “von seinem Regisseur und las alle seine Inhalte und wechselt zum Dateideskriptor" FD "zurück. Das Flag o_rdonly wurde zum Lesen verwendet. In der nächsten Zeile haben wir eine "if" -Schürtung deklariert, um zu überprüfen. Wenn es "-1" ist, wird eine Fehlermeldung "Öffnen" in der Shell und zurück 1. Außerhalb der Anweisung "if" haben wir die Dateideskriptoren verwendet, um den Strukturindizes Werte zuzuweisen. Der „IOV.Basis “ist ein Zeiger, der den Beginn eines Puffers und den„ IOV) zeigt.Len “zeigt die Gesamtgröße des Puffers in Bytes. Ein Vektor scheint eine Sammlung von Abschnitten zu sein. Jeder Abschnitt des Vektors gibt den Ort und die Größe eines Puffercache an, auf dem oder nach welchen Daten eingeschrieben oder gelesen werden können. Im vorherigen Übergang zum nachfolgenden Puffer deckt die ReadV () -Methode jeden der Bytes -Puffer „IOV_LEN“ vollständig ab. Bevor Sie tatsächlich zu einem anderen Puffer -Cache übergehen, beschreibt die WriteV () -Methode immer noch die gesamten "iov_len" -Bytes. Beginnend mit IOV [0], ehemals IOV [1] usw. über IOV [count-1] wirken beide Operationen noch auf die Abschnitte in der Reihenfolge. Danach haben wir einen "ReadV" -Systemanruf deklariert, um den Dateideskriptor und "IOV" -Bytepuffer bis zur Größe von 3 zu lesen.

Dann haben wir die zurückgegebenen Bytes überprüft. Wenn der Rückgabewert "-1" ist, wird eine Fehlermeldung "ReadV" angezeigt. Wir haben die "für" -Schloop verwendet, um die Dateizeichen über "IOV" zu drucken. Wenn die Funktion geschlossen wurde, wird „Schließen“ angezeigt. Speichern Sie diesen Code mit "Strg+S" und beenden Sie die Datei mit der Verknüpfungsmethode "Strg+x".

Kompilieren Sie nun den Code mit dem Befehl gcc wie unten angegeben.

$ GCC -Test.C

Führen Sie danach den Ausführungsbefehl aus, um die Ergebnisse zu überprüfen. Die folgende Ausgabe zeigt den Inhalt in Stücken und zeigt auch die Fehlermeldungen an. Es zeigt auch die Indexnummer für das Pufferarray als 0, 1 und 2 an.

$ ./A.aus

Abschluss

Wir haben alle wesentlichen Teile beendet, um den Aufruf „ReadV“ -System in der Ubuntu 20 zu komplizieren.04 Linux -System. Alle Befehle funktionieren für andere Linux -Verteilungen gleich.