Heim  >  Artikel  >  Web-Frontend  >  Eine kurze Analyse des POSIX-Standards der Node.js-API

Eine kurze Analyse des POSIX-Standards der Node.js-API

青灯夜游
青灯夜游nach vorne
2021-09-02 10:06:062128Durchsuche

Was ist POSIX? Was ist enthalten? Der folgende Artikel wird Ihnen helfen, den POSIX-Standard der Node.js-API und die Eigenschaften der Node.js-API zu verstehen. Ich hoffe, er wird Ihnen hilfreich sein!

Eine kurze Analyse des POSIX-Standards der Node.js-API

【Empfohlene Studie: „nodejs-Tutorial“】

Wenn Sie die Node.js-API verwendet haben, finden Sie es seltsam, warum der API-Name so lautet:

Erstellen Sie beispielsweise ein Verzeichnis:

const fs = require('fs');

fs.mkdir('/a/b/c', { recursive: true }, (err) => {
  if (err) throw err;
});

Erstellungsprozess:

const childProcess = require('child_process');

childProcess.fork('a/b/c.js');
childProcess.execFile('a/b/dddd');
childProcess.exec('"/path/to/test file/test.sh" arg1 arg2');
childProcess.spawn('ls', ['-lh', '/usr']);

mkdir, fork, exec, spawn usw. Wie kommen diese Namen her?

Wenn Sie den Linux-Befehl oder die C-Funktionsbibliothek verwendet haben, werden Sie feststellen, dass diese APIs auch in der Befehls- und C-Funktionsbibliothek diesen Namen haben.

Warum ist das so? Sind diese APIs Standard?

Ja, das ist der POSIX-Standard

Was ist POSIX

POSIX ist die Abkürzung für Portable Operating System Interface (Portable Operating System Interface), x bedeutet Unix, das von Unix geerbt wird.

Denn wenn die von verschiedenen Betriebssystemen bereitgestellten Funktionen und Systemaufrufe unterschiedlich sind, ist der Quellcode der auf dem Betriebssystem basierenden Oberschichtanwendung unterschiedlich, was dazu führt, dass der auf einer Plattform geschriebene Code nicht kompiliert werden kann eine andere Plattform.

Was tun?

Was ist, wenn die von jedem Betriebssystem bereitgestellte API dieselbe ist? Unabhängig davon, wie das zugrunde liegende Betriebssystem diese Funktionen implementiert, muss es der Anwendung lediglich dieselbe API zur Verfügung stellen. Auf diese Weise ist der Quellcode plattformübergreifend und kann nach der Kompilierung auf verschiedenen Betriebssystemen ausgeführt werden.

Der Standard für die von diesem einheitlichen Betriebssystem bereitgestellten APIs ist POSIX.

Dieser POSIX-Standard kann als eine in ts definierte Schnittstelle verstanden werden, sofern die API, die diese Schnittstelle implementiert, mit dem POSIX-Standard kompatibel ist.

POSIX war ursprünglich eine Erweiterung von Unix, die diesen POSIX-Standard implementierte. Später wurde Windows aufgrund des Drucks gezwungen, mit dem POSIX-Standard kompatibel zu sein, da sonst viele Linux-Anwendungen nicht unter Windows laufen würden. Das Gleiche gilt für unser häufig verwendetes OSX.

POSIX ist also eine Standardschnittstelle für das Betriebssystem, um Funktionen für übergeordnete Anwendungen bereitzustellen, einschließlich Systemaufrufen, C-Funktionsbibliotheken und Shell-Befehlen.

Die sogenannten Standards beziehen sich auf die von der ISO International Organization for Standardization anerkannten. Dabei handelt es sich um eine internationale Organisation mit Mitgliedern in verschiedenen Ländern, die verschiedene internationale Standards formuliert. POSIX ist der ISO/IEC 9945-Standard (IEC ist die Standardisierungsorganisation für Elektronik). Tatsächlich wurde POSIX von IEEE, einer amerikanischen Standardisierungsorganisation, vorgeschlagen. Die vorgeschlagenen Standards werden von der ISO anerkannt und werden zu internationalen Standards. POSIX ist beispielsweise der von ihnen vorgeschlagene Standard IEEE Std 1003, der jetzt von der ISO anerkannt wird ist zum ISO/IEC 9945-Standard geworden.

Was in POSIX enthalten ist

Werfen wir einen Blick darauf, welche Systemaufrufe von Linux bereitgestellt werden, das Posix unterstützt (Systemaufrufe beziehen sich auf Programme, die im Kernel-Code bereitgestellt werden):

Prozesssteuerung:

  • fork Create a Neuer Prozess
  • execv Ausführbare Datei ausführen
  • exit Prozess abbrechen

Datei lesen und schreiben

  • open Datei öffnen
  • close Dateideskriptor schließen
  • write Datei schreiben
  • read Datei lesen
  • truncate Datei abschneiden
  • fsync schreibt den Teil der Datei im Speicher auf die Festplatte.

Dateisystembezogen

  • Access bestimmt, ob auf die Datei zugegriffen werden kann.
  • chdir ändert das aktuelle Arbeitsverzeichnis.
  • chown ändert den Eigentümer oder die Benutzergruppe der Datei.
  • stat Ruft die Dateistatusinformationen ab
  • mkdir Verzeichnis erstellen
  • symlink Symbolischen Link erstellen
  • unlink Link löschen

usw.

Viele dieser Systemaufrufe haben APIs mit demselben Namen in Node.js, und Shells haben auch Befehle mit derselbe Name:

Zum Beispiel:

fs.stats
fs.access
fs.chown
fs.mkdir

fs.open
fs.close
fs.read
fs.write

child_process.fork
child_process.exec
child_process.execFile

Warten

Funktionen der Node.js-API

Node.js ist eine JS-Laufzeit, die auf Version 8 basiert, um viele APIs zu injizieren, die Betriebssystemfunktionen für JS-Aufrufe bereitstellen, und Viele dieser APIs sind für die direkte Verwendung von POSIX konzipiert. Standard-API-Namen, nicht viel Abstraktion.

Javas JRE (Java Runtime) bietet ebenfalls eine Abstraktion der Betriebssystemfunktionen, aber diese APIs haben wenig mit den POSIX-APIs des Betriebssystems zu tun und enthalten viele Designmuster, wie zum Beispiel das Dekoratormuster von IO-Streams.

Das Merkmal der API von Node.js ist, dass es nicht viele Abstraktionen gibt und viele API-Namen den Linux-Befehlen sehr ähnlich sind, was dem POSIX-Standard nahe kommt. Daher müssen Sie beim Erlernen von Node.js immer noch Linux-Befehle lernen. Die beiden haben eine gewisse Beziehung im Design.

Zusammenfassung

Der POSIX-Standard ist ein Standard für Betriebssystemfunktionen. Er definiert, welche APIs das Betriebssystem Anwendungen zur Verfügung stellen soll, einschließlich Shell-Befehlen, C-Funktionsbibliotheken, Systemaufrufen und anderen Standards. Der POSIX-Standard macht Anwendungen auf Quellcodeebene plattformübergreifend portierbar, indem sie einfach auf verschiedenen Plattformen kompiliert werden.

POSIX ist ein von der ISO anerkannter internationaler Standard. Er wurde zuerst von IEEE, einer Normungsvereinigung in den Vereinigten Staaten, vorgeschlagen. ISO ist eine Organisation, die sich auf die Anpassung internationaler Standards spezialisiert hat und an der Mitglieder aus vielen Ländern teilnehmen.

Die API von Node.js führt nicht viel Abstraktion durch und die meisten ihrer Namen ähneln der POSIX-Standard-API. Dies ist ihr Merkmal. Im Gegensatz dazu führt die von JRE für Java bereitgestellte API viel Abstraktion durch.

Da viele der APIs von Node.js nahe an der C-Funktionsbibliothek und den Shell-Befehlen liegen, werden Sie mehr gewinnen, wenn Sie Node.js in Kombination mit dem Erlernen von Shell-Befehlen lernen. Wenn Sie C kennen, können Sie die Systemfunktionsbibliothek erlernen .

Das Verständnis von POSIX ist die Voraussetzung, um das Node.js-API-Design zu verstehen und Node.js gut zu erlernen.

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmiervideos! !

Das obige ist der detaillierte Inhalt vonEine kurze Analyse des POSIX-Standards der Node.js-API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen