So verwenden Sie den Write-Systemaufruf in C

How Use Write System Call C



Der Systemaufruf dient als primäres Gateway zwischen Programmen und dem Linux-Betriebssystemkernel. Obwohl Sie während Ihrer gesamten C-Programmierkarriere mit ziemlicher Sicherheit einen Systemaufruf benötigen würden, werden das Glibc-Repository oder andere Standardbibliotheken, die in beliebten Linux-Distributionen zu finden sind, für die überwiegende Mehrheit Ihrer Bedarf. In diesem Handbuch werden wir ein Konzept über den Write System-Aufruf in der Sprache C erstellen.

Syntax:

#enthalten

ssize_tschreiben(int fd, const void*buf, size_t count);

In dieser obigen Syntax zeigt die erste Zeile die Bibliothek für Systemaufrufe. In der zweiten Zeile steht fd für einen Dateideskriptor, bei dem es sich tatsächlich um eine Zahl handelt, die die geöffnete Datei eines Prozesses angibt. Das Schlüsselwort *buf steht für Puffer. Dieser enthält alle darin enthaltenen Daten. Als nächstes wird gezählt. Es ist die Anzahl von Bytes, die aus dem Puffer in einen Dateideskriptor geschrieben werden sollen.







Installationsvoraussetzungen:

Um einen beliebigen C-Sprachcode auszuführen, müssen Sie zuerst einige Pakete in der Linux-Distribution installieren. Wenn Sie weitere Informationen zum Systemaufruf write anzeigen möchten, müssen Sie dazu das Paket manpages-dev installieren. Um das Terminal mit der Tastenkombination Strg+Alt+T zu öffnen. Schreiben Sie nach dem Öffnen den folgenden apt install-Befehl gefolgt vom manpages-dev-Schlüsselwort, um manpages zu installieren.



$sudogeeignetInstallierenmanpages-dev



Die Installation der Manpages wird einige Zeit in Anspruch nehmen. Warten Sie, bis es abgeschlossen ist.





Nach der Installation können Sie die zusätzlichen Informationen zum Systemaufruf write über das unten stehende man-Kommando in der Shell einsehen.



$Mann 2 schreiben

Die Ausgabe-Manpage für den Schreibbefehl ist unten angegeben. Sie können die Informationen dazu lesen. Drücken Sie q, um das Handbuch zu verlassen.

Jetzt ist es an der Zeit, das Gcc-Paket in Ihrem Linux-System zu installieren, damit es in der Sprache C funktioniert. Öffnen Sie dazu die Shell und schreiben Sie den folgenden apt install-Befehl gefolgt von dem Schlüsselwort gcc.

$sudogeeignetInstallieren gcc

Während der Installation werden Sie möglicherweise aufgefordert, diese Installationsaktion zu bestätigen, indem Sie y drücken, um fortzufahren und n, um sie zu stoppen. Tippen Sie also auf die Taste y und drücken Sie die Eingabetaste.

Es wird innerhalb weniger Minuten in Ihrem System installiert und die letzten Ausgabezeilen werden wie im folgenden Schnappschuss gezeigt.

Beispiele:

Sehen wir uns einige Beispiele für einen Write-Systemaufruf in unserer Linux-Distribution an. Öffnen Sie daher die Befehlszeilen-Shell und erstellen Sie darin eine neue C-Datei mit der Erweiterung Punkt c. Sie müssen den folgenden Nano-Befehl verwenden, um es schnell zu erstellen und zu öffnen. Wir haben ihm einen Namen als new.c gegeben.

$Nanoneu.c

Das untenstehende Fenster wird geöffnet. Nun müssen Sie den angehängten Code in diese Datei schreiben. In diesem Code haben wir zuerst eine unistd.h-Bibliothek eingefügt. Dann haben wir die main-Funktion erstellt, und innerhalb dieser Funktion haben wir einen write-Systemaufruf erstellt. Bei diesem Systemaufruf ist der allererste Parameter der Dateideskriptor. In diesem Fall stellt die ganze Zahl 1 den Bildschirm des Ausgabegeräts dar und ist fest. Unsere Ausgabe wird also auf dem Bildschirm angezeigt. Der zweite Parameter zeigt die Pufferdaten. Sie können alles hinzufügen. Und der letzte Parameter zeigt die Zählnummer für die im Pufferparameter angegebenen Daten. Da wir 5 als Zählnummer erwähnt haben, werden nur die ersten 5 Bytes der Pufferdaten angezeigt und die verbleibenden Bytes ignoriert. Speichern Sie diesen Code mit der Tastenkombination Strg+S und verlassen Sie diese Datei mit dem Befehl Strg+X.

#enthalten

Int main()

{Schreiben(1Aqsa Yasin5);}

Versuchen Sie nun im Terminal den folgenden gcc-Befehl, um diesen neu erstellten Code mit einem Dateinamen zu kompilieren.

$gccneu.c

Schauen wir uns diesen Code an, indem wir die zur Laufzeit erstellte Standarddatei a.out verwenden. Versuchen Sie also den folgenden Befehl a.out, um die Ausgabe des Systemaufrufs write zu überprüfen. Wir müssen es mit ./ verwenden, um die Datei aus dem aktuellen Verzeichnis auszuwählen.

$./a.out

Die Ausgabe, die Sie sehen können, hat aufgrund der Zählnummer 5 nur das Wort Aqsa angezeigt.

Ändern wir unseren Code ein wenig. Wir haben die Zählnummer auf 11 geändert, da wir insgesamt 11 Bytes in unseren Pufferdaten Aqsa Yasin haben. Diesmal zeigt die Ausgabe also die gesamten Bytes der String-Daten Aqsa Yasin. Speichern Sie diese Datei mit Strg+S und beenden Sie sie mit der Tastenkombination Strg+X.

Lassen Sie uns den aktualisierten Code mit dem neu installierten gcc-Compiler für die Linux-Distribution kompilieren. Versuchen Sie den gleichen gcc-Befehl zusammen mit dem Namen einer Datei wie new.c.

$gccneu.c

Zeigen Sie nun die Ausgabe desselben Codes mit dem vorherigen a.out-Befehl wie unten an. Die Ausgabe zeigt den vollständigen String Aqsa Yasin des Puffers.

$./a.out

Sehen wir uns an, wie der Code funktioniert, wenn wir die Zählnummer größer nehmen als die Gesamtzahl der Bytes, die die Pufferdaten enthalten. Wir haben also die Anzahl als 30 verwendet. Speichern und schließen Sie die Datei.

Kompilieren Sie dieselbe aktualisierte Datei mit dem gcc-Befehl wie unten beschrieben.

$gccneu.c

Führen Sie nun die Datei mit dem Befehl a.out aus, und die Ausgabe zeigt die Pufferdaten sowie einige Müllwerte an, wie in der Snapshot-Ausgabe unten angezeigt.$ ./a.out

Sie können auch die Gesamtzahl der in die Datei geschriebenen Bytes überprüfen, indem Sie den folgenden Code in derselben Datei verwenden.

Kompilieren Sie den Code mit der gcc-Anweisung.

$gccneu.c

Die Ausgabe zeigt die Gesamtzahl der Bytes, einschließlich Pufferdaten und Zeilenumbruch, mit dem Befehl a.out.

$./a.out

Abschluss:

In diesem Tutorial haben wir das Konzept zur Verwendung des Write-Systemaufrufs in C ausgearbeitet. Probieren Sie alle Beispiele aus, um die Idee des Write-Systemaufrufs mit diesem Artikel zu verstehen.