Was ist ein Systemaufruf unter Linux und wie funktioniert es mit Beispielen?

Was ist ein Systemaufruf unter Linux und wie funktioniert es mit Beispielen?

Ein Systemaufruf ist eine Funktion, mit der ein Prozess mit dem Linux -Kernel kommunizieren kann. Dies ist nur eine programmatische Möglichkeit für ein Computerprogramm, eine Einrichtung aus dem Kernel des Betriebssystems zu bestellen. Systemaufrufe setzen die Ressourcen des Betriebssystems über eine API (Application Programing Interface) aus Benutzerprogrammen aus. Systemaufrufe können nur auf das Kernel -Framework zugreifen. Systemanrufe sind für alle Dienste benötigt, die Ressourcen benötigen.

Der Linux -Kernel ist eine proprietäre Software, die im Gerät im geringsten potenziellen Stadium lädt und arbeitet. Seine Aufgabe ist es, alles, was auf der Maschine geschieht. Die Trennung von Software und Hardware erzeugt eine sichere Blase, die den Schutz und die Zuverlässigkeit verbessert. Nicht privilegierte Anwendungen können die Speicherung eines anderen Programms nicht erreichen, und wenn man fehlschlägt, setzt der Kernel den Prozess aus, sodass er das gesamte System nicht beschädigt.

Wafer Thin Wrapper:

Die Linux -Systemaufrufe werden in bestimmten Programmen nicht explizit dem Kernel übertragen. Fast alle Programme verwenden die grundlegende C -Bibliothek und bieten einen leichten, aber essentiellen Wrapper über die Linux -Systemaufrufe an. Das Repository bietet dann den begleitenden Linux -Maschinenaufruf, nachdem sichergestellt wurde, dass die Funktionsparameter in die richtigen Prozessorregister übersetzt werden. Wenn der Wrapper Daten aus dem Systemaufruf erhält, analysiert er sie und trägt sie klar zum Programm bei. Jeder maschineninteraktive Betrieb in einem Programm wird letztendlich in einen Systemaufruf umgewandelt. Schauen wir uns einige von ihnen an. Es gibt eine lange Liste von Linux -Systemaufrufen, die wir in unserem Linux -System verwenden können. Hier finden Sie die Liste einiger gemeinsamer und meistens gebrauchter Linux -Systemaufrufe.

  • Offen
  • Schließen
  • Geschäftsführer
  • Schreiben
  • Lesen
  • Lseek
  • Wählen

Lassen Sie uns einige der Linux-Systemaufrufe mithilfe der C-Sprache in unserem Artikel diskutieren, um damit praktisch zu werden.

Offener Systemanruf:

Wir können den Aufruf „Open“ -System in unserer Linux -Verteilung verwenden, um das Dokument schnell zu öffnen, das wir in unserem Code der C -Sprache angeben werden. Starten Sie zuerst das Befehlsterminal. Sie können die Verknüpfung "Strg+Alt+T" verwenden. Angenommen, Sie haben eine Textdatei “Test.txt ”im Home -Verzeichnis, und es enthält einige Inhalte darin. Am Anfang müssen Sie also einen neuen C -Typ -Dateinamen „neu erstellen.c ”im Terminal über Nano Editor. Probieren Sie daher die einfache unterhalb der Nano -Anweisung aus.

$ nano neu.C

Jetzt wurde der Nano -Redakteur gestartet. Geben Sie den unteren Code darin ein. Wir haben zwei Dateideskriptoren im Code. Beide Dateien können mit dem Open -System -Aufruf geöffnet werden. Der erste Deskriptor enthält einen Leseaufruf, und der zweite enthält die Schreibfunktion. Der erste offene Anruf wird die Textdatei „Test öffnen.txt ”und speichern seinen Inhalt in den Dateideskriptor" FD ". Der zweite Open -System -Anruf erstellt eine Datei mit dem Namen "Target". Das Dokument "Ziel" wurde einem "FD1" -Dateideskriptor erstattet. Der Schreibanweis. Tippen Sie auf "Strg+S", um den Code zu speichern, und klicken Sie auf die Taste "Strg+X", um die Datei zu beenden.

Führen Sie den GCC Compile -Anweisungen aus, um diesen C -Code zu kompilieren.

$ gcc neu.C

Lassen Sie uns den Code mit dem einfachen „a) ausführen.Out “Abfrage in der Hülle wie folgt:

$ ./A.aus

Die Ausgabedaten wurden an die Datei „Ziel“ übertragen. Lassen Sie uns die "Ziel" -Datei mit der Abfrage "Katze" überprüfen. Der Ausgangsbildschirm zeigt die 20 -Zeichen -Daten in der "Ziel" -Datei angezeigt.

$ cat Ziel

Ausführungssystemanruf:

Der EEL -Systemanruf wird abgelegt, um eine derzeit verarbeitete Datei auszuführen. Die frühere ausführbare Datei wird ersetzt und die aktuelle Datei wird betrieben, wenn EXEC aufgerufen wird. Durch die Verwendung eines EXEC -Systemaufrufs können wir davon ausgehen, dass dies das alte Dokument oder die Anwendung in der Schleife mit einem frischen überschreibt. Neue Software wird verwendet, um das Material des gesamten Prozesses zu überschreiben. Das Dokument, dessen Titel in der Erklärung angegeben ist, wenn der Abschnitt "Exec () System Call () ausführt, wird für den Abschnitt" Exec (") ersetzt () ersetzt. Öffnen Sie also das Befehlsterminal und erstellen Sie mit dem Nano -Editor eine neue C -Typ -Datei wie folgt:

$ nano exp.C

Der Herausgeber wurde jetzt eröffnet. Schreiben Sie den gesamten Code unten C -Sprachcode darauf auf. Es sind drei Hauptbibliotheken enthalten. Danach wurde die Hauptfunktion instanziiert. In der Druckanweisung wurden die Zeichenfolgendaten und die Prozess -ID der Datei "exp exp gezeigt" angezeigt.C". Die Funktion getPid () wurde zu diesem Zweck verwendet. Dann haben wir ein Zeichen -Array mit einigen Werten darin. Mit dem EXEC-Systemaufruf wurde der Dateinamen und das One-Line Oben-Array als Argument verwendet. Jetzt die Datei „Hallo.C ”wird verarbeitet. Danach kommt eine weitere Druckerklärung so weit, wird aber niemals ausgeführt werden. Drücken Sie "Strg+S", um diese Datei zu speichern. Schlagen Sie "Strg+X" zum Beenden auf.

Jetzt ist es Zeit, eine weitere C -Datei zu erstellen, „Hallo.C ”Verwenden Sie den Nano -Editor. Verwenden Sie dazu die folgende Abfrage in der Schale, um dies zu tun.

$ nano Hallo.C

Schreiben Sie den folgenden Code darin. Dieser Code enthält zwei Druckanweisungen in der Hauptfunktion. Das erste ist nur eine darin druckende Zeichenfolge, und die zweite druckt die Zeichenfolge, während die Prozess -ID der aktuell verwendeten Datei abgerufen wird. Dies lautet „Hallo.C".

Lassen Sie uns beide Dateien mit GCC nacheinander kompilieren.

$ gcc -o exp exp.C
$ gcc -o hallo hallo.C

Wenn wir die Exp ausführen.c Datei wird die erste Druckanweisung aus dem Exp ausgeben.c Datei und beide Drucklinien aus dem Hallo.c Datei.

$ ./exp

Abschluss:

Wir haben über das gesamte Konzept von Linux -Systemaufrufen ausgearbeitet und wie sie in Ihrem Linux -System verwendet werden können. Wir haben Ubuntu 20 verwendet.04 Während der Implementierung dieses Konzepts.