ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js API の POSIX 標準の簡単な分析

Node.js API の POSIX 標準の簡単な分析

青灯夜游
青灯夜游転載
2021-09-02 10:06:062128ブラウズ

POSIX とは何ですか?何が含まれていますか?次の記事では、Node.js API の POSIX 標準と Node.js API の特徴について説明します。

Node.js API の POSIX 標準の簡単な分析

[推奨学習:「nodejs チュートリアル 」]

Node.js の API を使用したことがある方は、次のように感じますか?奇妙なことに、API の名前が次のようになっているのはなぜですか:

たとえば、ディレクトリを作成します:

const fs = require('fs');

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

プロセスを作成します:

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 、など、名前は何ですか?起きましたか?

Linux コマンドまたは C 関数ライブラリを使用したことがある場合は、これらの API がコマンドおよび C 関数ライブラリでもこの名前を持っていることがわかります。

なぜそうなるのでしょうか?これらの API は標準ですか?

はい、これは POSIX 標準です。

POSIX とは

POSIX は、ポータブル オペレーティング システム インターフェイス (ポータブル オペレーティング システム インターフェイス) の略語です。 x は unix を意味します。つまり、unix から継承されます。

OSが異なれば、提供する機能やシステムコールが異なれば、OSに基づく上位層アプリケーションのソースコードも異なるため、同じプラットフォーム上で書かれたコードが異なることになります。別のプラットフォームで使用できるようにするため、コンパイルします。 ######どうやってするの?

各オペレーティング システムが提供する API が同じだったらどうなるでしょうか?基盤となるオペレーティング システムがこれらの機能をどのように実装しているかに関係なく、同じ API をアプリケーションに公開するだけで済みます。このようにして、ソース コードはクロスプラットフォームであり、異なるオペレーティング システムでコンパイルした後に実行できます。

この統合オペレーティング システムによって公開される API の標準は POSIX です。

この POSIX 標準は、ts で定義されたインターフェイスとして理解でき、このインターフェイスの API が実装されている限り、POSIX 標準と互換性があります。

POSIX はもともと Unix の拡張機能でした。Linux は POSIX 標準を実装しました。その後、圧力により Windows は POSIX 標準との互換性を持たざるを得なくなりました。そうしないと、多くの Linux アプリケーションを Windows 上で実行できなくなります。 。私たちがよく使うOSXも同様です。

つまり、POSIX は、システム コール、C 関数ライブラリ、シェル コマンドなどの機能を上位レベルのアプリケーションに提供するオペレーティング システムの標準インターフェイスです。

いわゆる規格とは、ISO 国際標準化機構によって認められた規格のことで、さまざまな国に加盟する国際機関であり、さまざまな国際規格を策定している組織です。 POSIX は ISO/IEC 9945 規格です (IEC はエレクトロニクスの標準化団体です)。実は、POSIX はアメリカの標準化団体である IEEE によって提案されたものであり、その提案した標準は ISO に認められ、国際標準となります。 ISO/IEC 9945の規格となっています。

POSIX の内容

POSIX をサポートする Linux によって提供されるシステム コールを見てみましょう (システム コールとは、POSIX で提供されるシステム コールを指します)カーネル コード プログラム):

プロセス制御:

fork は新しいプロセスを作成します
  • execv は実行可能ファイルを実行します
  • exit はプロセスを終了します
  • ファイルの読み取りと書き込み

#open ファイルを開きます

    close ファイル記述子を閉じます
  • write ファイルを書き込みます
  • read ファイルを読み取ります
  • truncate ファイルを切り詰めます
  • #fsync メモリ内のファイルの一部をディスクに書き込みます
  • ##ファイル システム関連
  • access はファイルが利用可能かどうかを決定します Access

chdir 現在の作業ディレクトリを変更します

    chown ファイル所有者またはユーザー グループを変更します
  • stat ファイルのステータス情報を取得します
  • mkdir ディレクトリの作成
  • symlink シンボリック リンクの作成
  • #unlink リンクの削除
  • ##etc
  • これらのシステム コールの多くには API がありますNode.js 内でも同じ名前で、シェルも同じ名前です。 コマンド:
  • 例:
  • 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
etc.

Node.js の機能。 js api

Node.js は js 実行時に、オペレーティング システム機能を提供する多くの API が v8 ベースの JS に挿入され、これらの API 設計の多くは、あまり抽象化せずに POSIX 標準 API 名を直接使用します。 。

Java の JRE (Java ランタイム) もオペレーティング システム機能の抽象化を提供しますが、これらの API はオペレーティング システムの POSIX API とはほとんど関係がなく、io ストリーム デコレーション デバイス モードなどの多くの設計パターンが組み込まれています。

Node.js API は抽象化があまり多くないという特徴があり、多くの API 名は Linux コマンドに非常に似ており、POSIX 標準に近いものになっています。したがって、Node.js を学習する場合でも Linux コマンドを学習する必要があり、この 2 つは設計において一定の関係があります。

概要

POSIX 標準は、オペレーティング システム機能の標準であり、オペレーティング システムがアプリケーションに公開する必要がある API (シェル コマンド、C 関数ライブラリ、システムコールなどの規格。 POSIX 標準により、アプリケーションを異なるプラットフォームでコンパイルするだけで、ソース コード レベルでプラットフォーム間でアプリケーションを移植できるようになります。

POSIX は、米国の標準化団体 IEEE によって最初に提案された、ISO によって認められた国際標準です。 ISO は国際標準のカスタマイズを専門とする組織であり、多くの国からメンバーが参加しています。

Node.js の API はあまり抽象化を行わず、名前のほとんどが POSIX 標準 API に似ています。これが Node.js の特徴です。対照的に、JRE によって Java に公開される API は抽象化を行います。 . 抽象度が高い。

Node.js の API の多くは C 関数ライブラリやシェル コマンドに近いため、Node.js をシェル コマンドと組み合わせて学習するか、C を理解している人はシステム関数ライブラリについてさらに詳しく学ぶことができます。 。 褒美。

Node.js API 設計を理解し、Node.js をよく学ぶには、POSIX を理解することが前提条件です。

プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !

以上がNode.js API の POSIX 標準の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。