Systemanruf in c lesen

Systemanruf in c lesen

Ein Systemaufruf ist eine Methode für Software, um mit dem Betriebssystem zu kommunizieren. Wenn Software einen Systemanruf ausführt, wird die Anfrage an den Kernel des Betriebssystems gesendet. Um durch einen Dateideskriptor zu lesen, können Sie die Funktion read () System verwenden. Jeder Prozess enthält seine persönliche Dateideskriptoren -Tabelle im Betriebssystem. Der einzige Unterschied zwischen read () und write () besteht darin. Die Lesezeit für die Datei wird nach einem erfolgreichen Read () aktualisiert.

Syntax

# ssize_t read (int fd, const void *buf, size_t count);

Der Dateideskriptor ist das erste Argument. Der Puffer ist das zweite Argument. Schließlich gibt die dritte Option an, wie viele Bytes Sie lesen möchten. Bytes ist nur das zu kopierende Datenvolumen, und der Puffer ist die Adresse des Speicherraums, in dem Daten ausgeschrieben werden sollen. Das Rückgabeergebnis repräsentiert die Menge der in Bytes geschriebenen Daten; Wenn es von Bytes unterschiedlich ist, scheint etwas falsch zu sein. Wenn der Wert negativ ist, wird der Systemaufruf abbrechen.

Voraussetzungen

Der GCC -Compiler ist erforderlich, um den Code zu kompilieren, der einen Read () -Systemanruf enthält. Um C -Sprachcode auszuführen und zusammenzustellen, müssen wir ein Compiler -Paket auf unserem Computer installieren. Wir müssen also auch den GCC -Compiler installieren. Sie können es mit dem Befehl unten in einem Linux -Terminal installieren, wie unten gezeigt. Es wird in nur wenigen Augenblicken installiert, und Sie können einfach C -Codes in Dateien schreiben und ausführen.

Durch Drücken der Eingabetaste wird der GCC -Compiler installiert. Es wird ein paar Momente dauern, bis Sie auffordert, Ja oder Nein zu sagen. Wenn Sie Ja wählen, wird die Ausgabe des GCC -Compilers überprüft. Verwenden Sie die folgende Anweisung, um GCC auf Ihrem System zu installieren.

$ sudo APT Installieren Sie GCC

Erstes Beispiel für Read () Systemaufruf in c

Beginnen wir mit read (), um ein besseres Verständnis dafür zu bekommen. Zunächst müssen Sie den GNU-Editor der Shell verwenden, um eine C-Type-Datei zu generieren. Versuchen Sie dafür, die einfache Abfrage unten im Terminal auszuführen.

$ nano read1.C

Es wird etwas Zeit dauern, bis der oben genannte Befehl geöffnet ist, aber sobald Sie es tun, können Sie ihn sofort verwenden. Es startet Ihr Ubuntu 20.Der GNU -Editor von 04 sofort. Der GNU -Editor wird wie im unten angehängten Bild angezeigt. Schreiben Sie nun den angezeigten Code in den Editor.

Der Call read () systemaufruf empfängt die Eingabe des Benutzers von der Tastatur, die der Dateideskriptor als 0 ist, und stellt ihn in den Puffer „Buff“ ein, der nur ein Zeichenarray ist. Es kann jeweils nur bis zu 10 Bytes lesen. Es werden nur die ersten 10 Buchstaben gelesen, unabhängig davon, wie viel der Benutzer eingibt. Zuletzt werden die Daten im Fenster mit dem System write () systemanruf angezeigt.

Auf der Anzeige druckt es die gleichen 10 Bytes wie aus dem Puffer aus dem Dateideskriptor 1. Sie sollten nun den oben gezeigten Code kompilieren. Wir müssen den GCC -Compiler für die Codekompilierung verwenden. Um das „Read1 zu kompilieren.c ”Datei, führen Sie den GCC -Befehl unten aus. Kehren Sie zur Konsole zurück und schreiben Sie den Befehl:

$ gcc read1.C

Jetzt müssen wir diesen Code mit dem ausführen./A.OUT -Befehl im Terminal, wie unten angezeigt.

$ ./A.aus

Gemäß dem Programm wird die Ausgabe im oben genannten Screenshot angezeigt.

Zweites Beispiel für Read () Systemaufruf in c

Sie können nicht vorhersagen, wie viel der Benutzer als Eingabe eingeben würde. Infolgedessen kann das dritte Argument für das Write () -System nicht verwendet werden, um die Rechtsbytes bereitzustellen. Das Ergebnis kann von dem abweichen, was Sie erwartet haben. Denken Sie daran, was Read () zurückgibt, wenn es erfolgreich ist. Um dieses Konzept zu demonstrieren, führen wir dieses Beispiel aus. Verwenden Sie jetzt erneut den GNU-Editor der Shell, um eine C-Type-Datei zu generieren. Versuchen Sie dafür, die einfache Abfrage unten im Terminal auszuführen.

$ nano gelesen.C

Es wird etwas Zeit dauern, bis der oben genannte Befehl geöffnet ist, aber sobald Sie es tun, können Sie ihn sofort verwenden. Es startet Ihr Ubuntu 20.Der GNU -Editor von 04 sofort. Der GNU -Editor wird wie im unten angehängten Bild angezeigt. Schreiben Sie nun den angezeigten Code in den Editor.

In diesem Code verwenden wir die NREAD -Variable, um die Anzahl der Bytes zu halten, die vom READ () -Systemaufruf in C gelesen werden, und verwenden die Variable in write (), um die gleiche Menge an Bytes auf dem Fenster anzuzeigen. Sie sollten nun den oben gezeigten Code kompilieren.

Wir müssen den GCC -Compiler für die Codekompilierung verwenden. Um die „Lesen zu kompilieren.c ”Datei, führen Sie den GCC -Befehl unten aus. Kehren Sie zur Konsole zurück und geben Sie den Befehl ein:

$ gcc lesen.C

Sobald der Code kompiliert ist, führen Sie diesen Code mit dem aus ./A.OUT -Befehl im Terminal, wie unten angezeigt.

$ ./A.aus

Gemäß dem Programm wird die Ausgabe im oben genannten Screenshot angezeigt.

Abschluss

Um das Konzept des Read () -Systemaufrufs in Ubuntu zu verstehen, haben wir einige einfache und lineare Beispiele in C untersucht. Wir haben auch behandelt, wie der GCC -Compiler für die Codekompilierung eingerichtet wird. Ich hoffe, Sie können jetzt einfach den Read () -Systemanruf verwenden, um Ihren Code auf Ubuntu 20 zu erstellen.04.