So verwenden Sie Open System Call in C

How Use Open System Call C

Die Systemaufrufe werden in den Linux-Distributionen verwendet, um eine Tür innerhalb des Linux-Betriebssystems und der Programme bereitzustellen. Das Linux-Betriebssystem verwendet die Glibc-Bibliothek, um darin Systemaufrufe zu unterstützen, während die Sprache C verwendet wird. Es gibt noch viel mehr Möglichkeiten, Systemaufrufe zu verwenden. In diesem Artikelleitfaden werden wir den offenen Systemaufruf im Linux-System diskutieren. Der Systemaufruf Open wurde verwendet, um die im Pfad angegebene Datei schnell zu öffnen. Es informiert uns über den Dateideskriptor einer vom Benutzer erstellten Datei. Wir haben Ubuntu 20.04 verwendet, um einige praktische Open-Systemaufrufe zu erhalten.

Bibliotheken installieren

Für die Sprache C müssen einige zusätzliche Bibliothekspakete als Voraussetzungen installiert werden. Zunächst müssen Sie das Paket manpages-dev installieren, um die Informationen zu Systemaufrufen zu überprüfen. Öffnen Sie das Befehlszeilenterminal im Aktivitätsbereich und führen Sie die folgende Anweisung aus, um Hilfeseiten zu installieren.



$ sudo apt installieren Manpages-Entwickler



Die Ausgabe für den Abschluss der Installation ist unten angegeben.



Jetzt werden wir mit dem Befehl man wie unten nach dem offenen Systemaufruf suchen.

$ Mann2offen



Die Ausgabe-Manpage für den Open-Systemaufruf ist unten gezeigt. Sie können die zusätzlichen Informationen dazu sehen. Drücken Sie die q-Taste, um es zu verlassen.

Die obige Syntax zeigt die ersten drei Zeilen der notwendigen Bibliotheken, die für Systemaufrufe hinzugefügt werden müssen. Für den offenen Systemaufruf stehen drei Syntaxen zur Verfügung. Die erste Syntax zeigt den Pfadnamen, der der Name einer zu öffnenden Datei ist. Der zweite Parameter, flags, zeigt den Modus einer Datei an, z. B. Lesen oder Schreiben. Die zweite Syntax kann verwendet werden, wenn die Datei nicht existiert. Der Parametermodus wird verwendet, um die Berechtigungen für die Datei anzuzeigen.

Jetzt ist es an der Zeit, den GCC-Compiler zum Debuggen von C-Code in der Linux-Distribution Ubuntu 20.04 zu installieren. Führen Sie dazu die folgende Anweisung in der Shell aus.

$ sudo apt install gcc

Sie müssen auf Y tippen, um mit der Installation des GCC-Compilers fortzufahren, andernfalls drücken Sie die Schaltfläche n, um die Installation zu schließen. Drücken Sie also die y-Taste und drücken Sie die Eingabetaste, um fortzufahren.

Die Ausgabe für die Vervollständigung ist unten dargestellt.

Beispiel 01

Schauen wir uns das sehr einfache Beispiel eines Open-Systemaufrufs an. Öffnen Sie zunächst die Befehlsshell und erstellen Sie mit dem einfachen Touch-Befehl wie folgt eine neue Textdatei test.txt:

$berührentest.txt

Fügen Sie manuell einige Daten hinzu. Sie können die Daten in einer Datei mit dem folgenden cat-Befehl anzeigen.

$Katzetest.txt

Erstellen wir nun eine neue C-Datei mit einem Nano-Befehl in der Shell, wie unten gezeigt.

$Nanoneu.c

Die folgende GNU-Nano-Datei wird geöffnet. Sie müssen den folgenden C-Sprachcode eingeben. Wie Sie sehen, haben wir die erforderlichen Bibliothekspakete hinzugefügt, damit der C-Code ordnungsgemäß ausgeführt wird. Danach haben wir die main-Funktion definiert, die an einem Open-Systemaufruf arbeitet. Wir haben zwei ganzzahlige Variablen deklariert. Die Variable n wird verwendet, um Pufferwerte zu zählen, und die Variable fd wird für den Dateideskriptor verwendet. Wir haben das Puffer-Array vom Zeichentyp als buf mit der Größe 50 deklariert. Der offene Systemaufruf wurde verwendet, um den Inhalt aus der Datei test.txt zu lesen und an den Dateideskriptor zurückzugeben. Der O_RDONLY wurde zum Lesen verwendet. Die nächste Zeile zeigt den Systemaufruf read, um die 10 Bytes aus dem Puffer zu sammeln und in die ganze Zahl n zurückzugeben. Außerdem wurde der Schreibbefehl verwendet, um den Inhalt oder die Pufferdaten in den Dateideskriptor zu schreiben, der in unserem Fall gerade der Ausgabebildschirm ist. Speichern Sie diese Datei mit Strg+S und schließen Sie sie mit dem Befehl Strg+X.

#enthalten
#enthalten
#enthalten
#enthalten

inthauptsächlich()
{
intn,fd;
verkohlenbuf[fünfzig];
fd=offen(Prüfung.TXT,O_RDONLY);
n=lesen(fd,buf, 10);
schreiben(1 ,buf, 10);

Lassen Sie uns zuerst den C-Code für einen offenen Systemaufruf mit dem folgenden gcc-Befehl kompilieren.

$gccneu.c

Jetzt ist es an der Zeit, die Ausgabe für den C-Code für einen offenen Systemaufruf zu überprüfen. Lassen Sie uns den folgenden a.out-Befehl in der Shell verwenden. Die Ausgabe zeigt die 10 Byte des Inhalts einer Datei test.txt an.

$./zu.aus

Nehmen wir ein weiteres Beispiel, um den Inhalt einer Datei mit einem Open-Systemaufruf in eine andere Datei zu schreiben. So erstellen Sie eine neue C-Datei mit dem nano-Befehl wie unten beschrieben.

$ Nano neu.C

Nehmen Sie also denselben Code mit einer geringfügigen Änderung. Wir haben einen weiteren Dateideskriptor im Code als fd1 definiert. Der gesamte Code ist bis auf eine zusätzliche Zeile gleich. In der vorletzten Zeile des Codes wurde der offene Systemaufruf verwendet, um eine neue Datei mit dem Namen target mit O_CREAT und dem Modus schreibgeschützt als O_WRONLY zu erstellen. 0642 zeigt die dieser Datei zugewiesenen Berechtigungen an. Und die Datei wurde an einen neuen Dateideskriptor zurückgegeben. Die nächste Zeile hat einen Befehl zum Schreiben der Inhaltsbytes in den Puffer gemäß seinem Dateideskriptor gezeigt. Speichern Sie die Datei und schließen Sie sie.

Führen Sie den gcc-Compile-Befehl aus, um die C-Sprachdatei zu debuggen.

$gcc neu.C

Um die Ausgabe von C-Code anzuzeigen, versuchen Sie die Anweisung a.out in der Shell wie folgt. Es erfolgt keine Ausgabe, da die Ausgabe an das neu erstellte Dateiziel umgeleitet wurde.

$./zu.aus

Lassen Sie uns die Daten eines Dateiziels mit dem Befehl cat überprüfen. Die Ausgabe zeigt, dass die Datei 20 Byte enthält.

$ Katzenziel

Abschluss

Im obigen Tutorial haben wir Ihnen erklärt, wie Sie einen offenen Systemaufruf in der Sprache C verwenden, indem Sie den gcc-Compiler verwenden. Mit Hilfe verschiedener Beispiele, die in dieser Anleitung erläutert werden, führt Sie Ihr gewünschtes Programm zu implementieren.